快速排序

快速排序算法是我们用的最佳的排序算法,虽然它的最坏时间为O(n2),但是它平均性能较好,期望运行时间O(nlgn)。另外它能够进行原地排序。

 1 #include<Stdio.h>
 2 int partition(int a[],int p,int r);
 3 void qSort(int a[],int p,int r);
 4 
 5 int main()
 6 {
 7     int a[9]={9,5,6,8,2,4,3,1,7};
 8     qSort(a,0,8);
 9     for(int i=0;i<9;i++)
10     {
11         printf("%d ",a[i]);
12     }
13     return 0;
14 }
15 void qSort(int a[],int p,int r)
16 {
17     if(p<r)
18     {
19         int q=partition(a,p,r);
20         qSort(a,p,q-1);
21         qSort(a,q+1,r);
22     }
23 }
24 int partition(int a[],int p,int r)
25 {
26     int i = p;
27     int j = r;
28     int x=a[r];
29     if(p<r)
30     {
31         while(i<j)
32         {
33             while(i<j&&a[i]<x)
34                 i++;
35             if(i<j)
36             {
37                 a[j]=a[i];
38                 j=j-1;
39             }
40             while(i<j&&a[j]>x)
41                 j--;
42             if(i<j)
43             {
44                 a[i]=a[j];
45                 i=i+1;
46             }
47         }
48     
49     }
50     a[i]=x;
51     return i;
52 }

 

posted @ 2013-12-12 15:25  weilq  阅读(185)  评论(0编辑  收藏  举报