Алгоритм быстрой сортировки - C (СИ)

Узнай цену своей работы

Формулировка задачи:

не могу понять, где ставить <, >, или >=, <= как точно понять?? А вообще это рабочий код, можете скомпилировать у себя
#include <stdio.h>
#include <stdlib.h>
#define SIZE    5

void InitR(int* p, int n, int number){
    int i;
    for(i=0;i<n;i++)    p[i]=(rand()%number)+1;
}   
 
void QSort(int* p,int l, int r){
    int i=l,j=r;
    int buf,m=(int)p[(l+r)/2];
 
    do{
        while(p[i]<m && i<r)    i++;          //почему именно p[i]<m, а не p[i]<=m
        while(p[j]>m && j>l)    j--;    
        
        if(i<=j){
            buf=p[i];p[i]=p[j];p[j]=buf;i++;j--;
        }
    }while(i<=j);                           //тут тоже почему i<=j, а не i<j

    if(j>l) QSort(p,l,j);
    if(j<r) QSort(p,i,r);
}

void Show(int* p, int n){
    int i;
    for(i=0;i<n;i++)    printf("p[%d] = %d  \n",i,p[i]);
    printf("\n\n\n");
}

void main(void){
    int* p;
    p=(int*)malloc(SIZE*sizeof(int));
    if(p==NULL){
        printf("Mo memory!");
        exit(0);
    }
 
    InitR(p,SIZE,SIZE); 
    Show(p,SIZE);
    QSort(p,0,SIZE-1);

    Show(p,SIZE);

    free(p);    p=NULL;
    system("pause");
}

Решение задачи: «Алгоритм быстрой сортировки»

textual
Листинг программы
        while(p[i]>m && i<r)    i++;        
        while(p[j]<m && j>l)    j--;

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


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

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

7   голосов , оценка 4.571 из 5