1 #include<stdio.h>
2 //quickSort
3 int partition(int a[],int start,int end) {
4 int node = a[start]; //初始节点
5 while(start<end) { //结束条件
6 while(a[end] >= node && end > start) //从右往左走
7 end--;
8 if(end>start)
9 a[start] = a[end];
10 while(a[start] <= node && start < end) //从左往右走
11 start++;
12 if(start < end) {
13 a[end] = a[start];
14 }
15 }
16 a[start]=node;
17 return start;
18 }
19
20 void quickSort(int a[],int start,int end) {
21 if(start >= end) return;
22 int i = 0,j = 0;
23 int pos = partition(a,start,end);
24 if(pos-1 > start)
25 quickSort(a,start,pos-1);
26 if(end > pos+1)
27 quickSort(a,pos+1,end);
28
29 }
30
31 void display(int a[],int len) {
32 int i=0;
33 for(i=0;i<len;i++) {
34 printf("%d ",a[i]);
35 }
36 printf("\n");
37 }
38
39 void main() {
40 int a[10] = {2,3,1,4,5,6,7,2,9,0};
41 int nums = 10;
42 quickSort(a,0,nums-1);
43 display(a,nums);
44 }