快速排序

快速排序实现的方式大同小异,个人认为以下代码较其它实现版本更简洁明了,希望对总是抱怨记不住快排的朋友有所帮助。
View Code
 1 #include<stdio.h>
 2 
 3 int partition(int A[], int m, int n)
 4 {
 5     int x = A[m];
 6     int i = m;
 7     int j,temp;
 8     for(j = m + 1; j <= n; j++)
 9     {
10         if(A[j] <= x)
11         {
12             i=i+1;
13             temp = A[i];
14             A[i] = A[j];
15             A[j] = temp;
16         }
17     }
18     temp = A[i];
19     A[i] = A[m];
20     A[m] = temp;
21     return i;
22 }
23 
24 void quicksort(int A[], int m, int n)
25 {
26     int q;
27     if(m < n)
28     {
29         q = partition(A, m, n);
30         quicksort(A, m, q-1);
31         quicksort(A, q+1, n);
32     }
33 }
34 
35 int main()
36 {
37     int A[10] = {20, 54, 5, 56, 0, -78, 64, 6, 8, 6};
38     int i;
39 
40     printf("排序前:");
41     for(i = 0; i < 10; i++)
42     {
43         printf("%5d", A[i]);
44     }
45     printf("\n");
46 
47     quicksort(A, 0, 9);
48 
49     printf("排序后:");
50     for(i = 0; i < 10; i++)
51     {
52         printf("%5d", A[i]);
53     }
54     printf("\n");
55 
56     return 0;
57 }

 

 
posted @ 2012-10-27 21:30  我的十八岁  阅读(95)  评论(0)    收藏  举报