快速排序

 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 }
posted @ 2012-10-06 11:51  zhengmian  阅读(326)  评论(0编辑  收藏  举报