上完数据结构的课就没有自己写过快速排序,今天写了一个,风格非常有待提高。
1 #include <stdio.h> 2 void quickSort(int a[],int p, int q) 3 { 4 int i; 5 /*printf("%d %d\n",p,q); 6 for (i = 0; i < 12; i++) { 7 printf("%d ",a[i]);14 } 8 printf("\n");*/ 9 if(p+1==q) 10 { 11 if (a[p]>a[q]) { 12 int t=a[p]; 13 a[p]=a[q]; 14 a[q]=t; 15 } 16 } 17 else if(p==q) 18 { 19 } 20 else 21 { 22 int t=a[p]; 23 int sw; 24 int i,j; 25 i=p+1; 26 j=q; 27 while (1) { 28 for(;a[i]<=t;i++); 29 for(;a[j]>t; j--); 30 if(i>j) 31 break; 32 sw=a[i]; 33 a[i]=a[j]; 34 a[j]=sw; 35 } 36 a[p]=a[j]; 37 a[j]=t; 38 /*printf("%d %d\n\n",i,j);*/ 39 quickSort(a,p,j); 40 quickSort(a,i,q); 41 } 42 } 43 int main(int argc, const char *argv[]) 44 { 45 int i; 46 /*int a[]={3,1,4,76,34,65,90,21,567,321,1234,2345};*/ 47 int a[]={331,34,43,64,75,43,7,4234,876,34}; 48 quickSort(a,0,sizeof(a)/sizeof(int)-1); 49 for (i = 0; i < sizeof(a)/sizeof(int); i++) { 50 printf("%d\n",a[i]); 51 } 52 return 0; 53 }