Рекурсивная функция сортировки - 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;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д