Быстрая сортировка работает наполовину - 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;
}