Алгоритм быстрой сортировки - 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--;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д