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