Рекурсивная функция сортировки - 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;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.077 из 5
Похожие ответы