1 /**
2 * 快速排序
3 * 博客园:狗剩的美丽家园
4 * 2017年12月26日
5 */
6
7 #include <iostream>
8 #include <algorithm>
9
10 using namespace std;
11
12 void Swap(int &p, int &q)
13 {
14 int temp = p;
15 p = q;
16 q = temp;
17 }
18 int Partition(int data[], int start, int end)
19 {
20 int temp = data[end];
21 int i = start - 1;
22 for (int j = start; j < end; j++) {
23 if (data[j] <= temp) {
24 ++i;
25 if (i != j) {
26 Swap(data[i], data[j]);
27 }
28 }
29 }
30 ++i;
31 Swap(data[i], data[end]);
32 return i;
33 }
34
35 void QuickSort(int data[], int start, int end)
36 {
37 if (start == end) return;
38 int index = Partition(data, start, end);
39 if (start < index) {
40 QuickSort(data, start, index - 1);
41 }
42 if (end > index) {
43 QuickSort(data, index + 1, end);
44 }
45 }
46
47
48 int main()
49 {
50 int data[] = {2, 8, 7, 1, 3, 5, 6, 4};
51 int start = 0;
52 int end = sizeof(data) / sizeof(data[0]) - 1;
53 QuickSort(data, start, end);
54 for (int i = start; i < end + 1; i++) {
55 cout << data[i] << ",";
56 }
57 }