快速排序

上完数据结构的课就没有自己写过快速排序,今天写了一个,风格非常有待提高。

 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  }
原文地址:https://www.cnblogs.com/mengqingzhong/p/3028345.html