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