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

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


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

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

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