Рекурсивная функция сортировки - C (СИ)
Формулировка задачи:
Сортировка выбором анализирует массив, отыскивая наименьший элемент массива.Затем этот самый элемент обменивается местами с первым элементом массива. Процесс повторяется для подмассива, что начинается со второго элемента массива.В результате каждого прохода один из элементов занимает соответствующее место. Эта сортировка по продуктивности схожа с пузырьковой - для массива из n элементов нужно выполнить n-1 проходов, а для каждого подмассив нужно выполнить n-1 сравнений для определения наименьшего значения. Когда подмассив, который отбрасываеться, будет содержать только один элемент, значит массив отсортирован. Напишите рекурсивную функцию selectionSort, что выполняет этот алгоритм.
Решение задачи: «Рекурсивная функция сортировки»
textual
Листинг программы
#include <stdio.h> #define elements_count(arr) ( sizeof(arr) / sizeof(*arr) ) void swap(int * a, int * b) { int tmp = *a; *a = *b; *b = tmp; } int * min_element(int * array, size_t count) { return ( count < 2 ) ? array : min_element(array + ( array[0] > array[count - 1] ), count - 1); } void selection_sort(int * array, size_t count) { if ( count > 1 ) { swap(array, min_element(array, count)); selection_sort(array + 1, count - 1); } } void dump(int * array, size_t count) { if ( count ) { printf("%d ", *array); dump(array + 1, count - 1); } else printf("\n"); } int main(void) { int array[] = { 7, 4, 8, 5, 9, 6, 2, 3, 1 }; printf("Before: "); dump(array, elements_count(array)); selection_sort(array, elements_count(array)); printf("After: "); dump(array, elements_count(array)); return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д