描述

通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

实现

  1. const arr = [ 8, 3, 9, 6, 80, 0, 2, 5, 90, 1, 99, 8, 8, 7 ];
  2. const quickSort = (start, size) => {
  3. let i = start;
  4. let j = size - 1;
  5. if (j < 0 || i >= j) {
  6. return false;
  7. }
  8. const key = arr[i];
  9. while (i < j) {
  10. for (j; j > i; j--) {
  11. if (arr[j] < key) {
  12. arr[i] = arr[j];
  13. arr[j] = key;
  14. i++;
  15. break;
  16. }
  17. }
  18. for (i; i < j; i++) {
  19. if (arr[i] > key) {
  20. arr[j] = arr[i];
  21. arr[i] = key;
  22. j--;
  23. break;
  24. }
  25. }
  26. }
  27. quickSort(start, i);
  28. quickSort(i + 1, size);
  29. return arr;
  30. };
  31. const result = quickSort(0, arr.length);
  32. console.info(result); //

时间复杂度: O(nlogn)