Рекурсивная функция сортировки - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Сортировка выбором анализирует массив, отыскивая наименьший элемент массива.Затем этот самый элемент обменивается местами с первым элементом массива. Процесс повторяется для подмассива, что начинается со второго элемента массива.В результате каждого прохода один из элементов занимает соответствующее место. Эта сортировка по продуктивности схожа с пузырьковой - для массива из n элементов нужно выполнить n-1 проходов, а для каждого подмассив нужно выполнить n-1 сравнений для определения наименьшего значения. Когда подмассив, который отбрасываеться, будет содержать только один элемент, значит массив отсортирован. Напишите рекурсивную функцию selectionSort, что выполняет этот алгоритм.

Решение задачи: «Рекурсивная функция сортировки»

textual
Листинг программы
  1. #include <stdio.h>
  2.  
  3. #define elements_count(arr) ( sizeof(arr) / sizeof(*arr) )
  4.  
  5. void swap(int * a, int * b) {
  6.     int tmp = *a;
  7.     *a = *b;
  8.     *b = tmp;
  9. }
  10.  
  11. int * min_element(int * array, size_t count) {
  12.     return ( count < 2 ) ? array : min_element(array + ( array[0] > array[count - 1] ), count - 1);
  13. }
  14.  
  15. void selection_sort(int * array, size_t count) {
  16.     if ( count > 1 ) {
  17.         swap(array, min_element(array, count));
  18.         selection_sort(array + 1, count - 1);
  19.     }
  20. }
  21.  
  22. void dump(int * array, size_t count) {
  23.     if ( count ) {
  24.         printf("%d ", *array);
  25.         dump(array + 1, count - 1);
  26.     }
  27.     else
  28.         printf("\n");
  29. }
  30.  
  31. int main(void) {
  32.     int array[] = { 7, 4, 8, 5, 9, 6, 2, 3, 1 };
  33.    
  34.     printf("Before: ");
  35.     dump(array, elements_count(array));
  36.     selection_sort(array, elements_count(array));
  37.     printf("After:  ");
  38.     dump(array, elements_count(array));
  39.    
  40.     return 0;
  41. }

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


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

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

13   голосов , оценка 4.077 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы