快速排序
1 #include<stdio.h>
2 #include<stdlib.h>
3
4 void quicksort(int *p,int start,int end);
5 int partion(int *p,int start,int end);
6 void print(int *p,int len);
7
8 int main()
9 {
10 int array [20];
11 int i= 0;
12
13 for(i=0;i<20;i++)
14 array[i]=rand()%100;
15
16 print(array,20);
17 quicksort(array,0,20);
18 print(array,20);
19 return 1;
20 }
21
22 //快速排序
23 void quicksort(int *p,int start,int end)
24 {
25 int pri;
26 if(start<end)
27 {
28 pri = partion(p,start,end);
29 quicksort(p,start,pri-1);
30 quicksort(p,pri+1,end);
31 }
32 }
33
34 //定位
35 int partion(int *p,int start,int end)
36 {
37 int key = p[start];
38 while(start<end)
39 {
40 while(start<end && p[end]<=key)
41 end--;
42 p[start] = p[end];
43 while(start<end && p[start]>=key)
44 start++;
45 p[end]=p[start];
46 }
47 p[start] = key;
48
49 return start;
50 }
51
52 //打印输出
53 void print(int *p,int len)
54 {
55 while(len--!=0)
56 printf("%d ",*p++);
57
58 printf("\n");
59 }
2 #include<stdlib.h>
3
4 void quicksort(int *p,int start,int end);
5 int partion(int *p,int start,int end);
6 void print(int *p,int len);
7
8 int main()
9 {
10 int array [20];
11 int i= 0;
12
13 for(i=0;i<20;i++)
14 array[i]=rand()%100;
15
16 print(array,20);
17 quicksort(array,0,20);
18 print(array,20);
19 return 1;
20 }
21
22 //快速排序
23 void quicksort(int *p,int start,int end)
24 {
25 int pri;
26 if(start<end)
27 {
28 pri = partion(p,start,end);
29 quicksort(p,start,pri-1);
30 quicksort(p,pri+1,end);
31 }
32 }
33
34 //定位
35 int partion(int *p,int start,int end)
36 {
37 int key = p[start];
38 while(start<end)
39 {
40 while(start<end && p[end]<=key)
41 end--;
42 p[start] = p[end];
43 while(start<end && p[start]>=key)
44 start++;
45 p[end]=p[start];
46 }
47 p[start] = key;
48
49 return start;
50 }
51
52 //打印输出
53 void print(int *p,int len)
54 {
55 while(len--!=0)
56 printf("%d ",*p++);
57
58 printf("\n");
59 }