1. 前言

快速排序是一种交换排序

2. 快排算法思想

快速排序的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分:分割点左边都是比它小的数,右边都是比它大的数。
然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

动态效果示意图:
**2.快速排序 - 图1

  1. void quickSort(vector<int> &arr, int left, int right) {
  2. if (left > right) {
  3. return;
  4. }
  5. int i = left, j = right, key = arr[left];
  6. while (i < j) {
  7. while (i < j && key <= arr[j]) {
  8. j--;
  9. }
  10. arr[i] = arr[j];
  11. while (i < j && key > arr[i]) {
  12. i++;
  13. }
  14. arr[j] = arr[i];
  15. }
  16. arr[i] = key;
  17. quickSort(arr, left, i - 1);
  18. quickSort(arr, i + 1, right);
  19. }

3. 双轴快速排序