Быстрая сортировка работает наполовину - C (СИ)
Формулировка задачи:
Всем здрасте,проблемка есть.
в плюсах есть функции вызова рекурсивного метода - это я знаю,но вот есть ли нечто подобное в Си? или аналог. помогите пожалуйста,а то он сортирует по половине и выдает не то что нужно)
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #define N 10
- int main()
- {
- int arr[N]; //то что будем сортировать
- int i,j; //то,чем оперирует массив
- int n,m; //вводимая разрядность массива
- int x; //середина
- int tmp; //временная переменная
- scanf("%d",&n); //ввод
- for(m=0;m<n;m++) //заполнение случайными числами
- arr[m] = rand()%100;
- for(m=0;m<n;m++) //вывод первоначального массива
- printf("%d ",arr[m]);
- printf("\n");
- //присваивания
- i = 0;
- j = n;
- x = arr[n>>1];
- do //сортировка
- {
- while(arr[i] < x) i++;
- while(arr[j] > x) j--;
- if (i <= j)
- {
- tmp = arr[i];
- arr[i] = arr[j];
- arr[j] = tmp;
- i++;
- j--;
- }
- }
- while (i <= j);
- // вот сюда бы по идее надо вставить рекурсивный вызов,но как?
- for(m=0;m<n;m++) //вывод отсортированного массива
- printf("%d ",arr[m]);
- return 0 ;
- }
Решение задачи: «Быстрая сортировка работает наполовину»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <errno.h>
- void func(int n){
- if (n > 0){
- printf(" %d", n);
- func(--n);
- }
- }
- int main(){
- int x = 15;
- func(x);
- return 0;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д