快速排序就是通过一趟排序将原数据分成两部分,其中一部分关键字都比另一部分小,接下来再对这两部分分别使用快速排序,这里有递归的思想。快速排序的平均时间复杂度为O(nlgn),所以适合数据量较大的情况,但快排需要频繁的对数据位置的操作,故不适合链式存储数据。

  1. function sortQuick(arr, start, end) {
  2. if (start >= end) {
  3. return;
  4. }
  5. let low = start;
  6. let high = end;
  7. let key = arr[low];
  8. while (low < high) {
  9. while (low < high && arr[high] >= key) {
  10. --high;
  11. }
  12. arr[low] = arr[high];
  13. while (low < high && arr[low] <= key) {
  14. ++low;
  15. }
  16. arr[high] = arr[low];
  17. }
  18. arr[low] = key;
  19. sortQuick(arr, start, low - 1);
  20. sortQuick(arr, low + 1, end);
  21. }

版权声明:本文为skyxu123原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/skyxu123/p/10552278.html