快速排序分析

快速排序采用的是分治的思想,选取一个基准数(一般为第一个数),将数列分成独立的两个部分,将比基准数小的数都放到基准数的左边,比基准数大的数都放到基准数的右边;然后继续对这两部分数据进行同样的操作,整个过程可以递归进行

快速排序源码

 

 1 #include <iostream>
 2 using namespace std;
 3 
 4 void qsort(int *a, int l, int r)
 5 {
 6     int key = a[l];
 7     int first = l;
 8     int last = r;
 9 
10     while (first < last)
11     {
12         while (first < last && a[last] > key)
13         {
14             last--;
15         }
16         a[first] = a[last];
17 
18         while (first < last && a[first] < key)
19         {
20             first++;
21         }
22         a[last] = a[first];
23 
24         a[first] = key;
25         qsort(a, l, first - 1);
26         qsort(a, first + 1, r);
27 
28     }
29 }
30 
31 int main()
32 {
33     int arr[10] = {3,6,4,1,7,9,5,0,2,8};
34     qsort(arr, 0, 9);
35     for (int i = 0; i < 10; i++)
36     {
37         cout << arr[i] << " ";
38     }
39     return 0;
40 }
View Code