QuickSort

1. Time Complexity :  O(nlongn) (比其他O(nlongn) 快)

2. Step:

  1. 选择key

  2. 排序, 小于key的在一端,大于key的在另一端

  3. 递归

3. CODE:

 1 #define SWAP(a, b) do {\
 2         typeof(a) tmp;\
 3         tmp = (a);\
 4         (a) = (b);\
 5         (b) = tmp;\
 6         } while(0)
 7 
 8 int QucikSort(int *a, int len)
 9 {
10     int i = 0, j = len - 1;
11     int flag = 0;
12 
13     if (len <= 1)
14       return 0;
15 
16     while (i < j) {
17       if (a[i] > a[j]) {
18           SWAP(a[i], a[j]);
19             flag = 1 - flag;
20     }
21 
22       flag == 0 ? i++ : j--;
23     }
24 
25     QucikSort(a, i);
26     QucikSort(a + i, len - i);
27 
28     return 0;
29 }

 

 

posted on 2012-09-16 10:10  robin.he  阅读(131)  评论(0)    收藏  举报

导航