Другие языки программирования и технологии

Добавить комментарии к коду С++ Быстрая Сортировка

//Быстрая сортировка
#include
#include
#include
#include
#include
#include

void quicksort(int *a,int l, int r){
int x,w,i,j;
i=l;
j=r;
x=a[(l+r)/2];
do
{
while(a[i]<x) i++;
while(x<a[j]) j--;
if (i<=j){
w=a[i];
a[i]=a[j];
a[j]=w;
i++;
j--;
}
}while(i<j);
if(l<j)
quicksort(a,l,j);
if(i<r)
quicksort(a,i,r);
}
int main(){
setlocale(LC_ALL, "Russian");

int *a;
int l,r,i,n;
printf("Введите размер массива: ");
scanf("%d", &n);
a=(int*)malloc(sizeof(int)*n);
printf("Быстрая сортировка\n");
srand((signed)time(NULL));
for(i=1;i<=n;i++)
{
a[i]=rand()%100;
printf("%i ",a[i]);
}
l=1;
r=n;
quicksort(a,l,r);
printf("\n");
for(i=1;i<=n;i++)
{
printf("%i ",a[i]);
}
printf("\n");
return 0;
}
И5
Игрок 5
187
#include "cstdlib"
#include "ctime"
#include "stdio.h"
#include "locale.h"

void quicksort(int *a,int l, int r){ //функция
int x,w,i,j; //много переменных
i=l; //начальный размер
j=r; //конечный размер
x=a[(l+r)/2]; //высчитал среднее значение в массиве
do //заходим в цикл
{
while(a[i]<x) i++; //входим в другой цикл, он работает пока a[i] меньше индекса среднего значения
//проще говоря цикл передвигает начальную позицию массива вправо
//а в этом цикле есть другой цикл,
while(x<a[j]) j--; //он передвигает последнюю позицию влево
if (i<=j){ //тут идёт процесс самой сортировки, замена значений массива по индексу
w=a[i];
a[i]=a[j];
a[j]=w;
i++;
j--;
}
}while(i<j); //работает весь цикл пока i<j
if(l<j) //если l<j, запускаем рекурсию
quicksort(a,l,j);
if(i<r) //обратное
quicksort(a,i,r);

//выход из рекурсии когда i == r

}
int main(){

setlocale(LC_ALL, "russian");

int *a; //указатель на тип инт
int l,r,i,n; //статические переменные
printf("Size: ");
scanf("%d", &n); //ввод в переменную числа
a=(int*)malloc(sizeof(int)*n); //выделение под число n памяти 4 байта (размер инта 4 байта)
//т. е. дают нам кусок памяти размером аж 4*n байт
printf("Quicksort\n");
srand((signed)time(NULL)); //каждую секунду новое значение из rand()
for(i=1;i<=n;i++) //заходим в цикл
{
a[i]=rand()%100; //рандомим все
printf("%i ",a[i]); //выводим все
}
l=1; //инициализируем переменные
r=n;
quicksort(a,l,r); //вкл функцию ^
printf("\n");
for(i=1;i<=n;i++)
{
//вывод готового массива
printf("%i ",a[i]);
}
printf("\n");
return 0;
}

насколько я понял подойдёт это вот)
ДБ
Дима Баранов
270
Лучший ответ
Дима Баранов А.. это тебе код комменитровать.. понял понял, некорректно принял вопрос)
В чем проблема?
Добавлять коментарии учат на первом уроке...
Юра Донда
Юра Донда
2 164