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 }