Быстрая сортировка Си, где ошибка? (20 баллов)

Компьютеры программирование С++ Си

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void sort(int m[], int f, int l)
// m - сортируемый массив, f,l - границы
{

int p,s,i,j;
// s - опорный элемент,p - переменная для замены, i,j - счётчики
i=f;
j=l;
s=m[(j+i)/2];
do
{
while (m[i]<s)
i++;
while (m[j]>s)
j--;

if (i<=j)
{
if (i<j)
{
p=m[j];
m[j]=m[i];
m[i]=p;
};
i++;
j--;
};
}while (i<j);
if(i>l)
sort(m,i,l);
if(j>f)
sort(m,f,j);
}

int main()
{
int i,n,*a,t,r;
//n-число элементов сортируемого массива,
//a - сам массив
// i, r - границы массива
// t - счётчик
scanf("%d", &n);
a=(int *)malloc(sizeof(int)*n);
if (a==NULL) return 0;
for (t=0;t<n;t++)
scanf("%d", &a[t]);
i=0;
r=n-1;
sort(a,i,r);
for (t=0;t<n;t++)
printf("%d ", a[t]);
return 0;
}


Примечание:
Ну пожалуйста!!!
Ответы:
Много ошибок, лишних переменных и лишнего кода, особенно замени эту бяку:
p=m[j];
m[j]=m[i];
m[i]=p;
на это: swap(m[i],m[j]);
Ни один вопрос не закрыт. Не определён лучший. И после этого надеяться на ответы, нет смысла. Уважать надо своих ответчиков!


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.