前言:
介绍了快排分界的标志点,选取的随机性会大大降低快排退化成O(n^2)算法的概率。
问题:当包含大量相同的元素的数组时
快排仍会退化成O(n^2)级别的算法
我们之前判断的时候,并没有判断等于的情况~ 这样会造成一个结果,把相同的放入左右任何一部分,会造成极其的不平衡,仍会退化成O(n^2)算法~
二路快速排序(Quick Sort 2 Ways)
算法思路:
然后从左到右逐渐遍历整个数组。现在将这两部分放到数组的两端,下标i、j分别进行扫码:
- 从下标 i这个位置向后扫描,
- 当扫描的元素e小于v :则继续向后扫描。
- 当扫描的元素e大于v:
- 从下标 j这个位置向前扫描,
- 当扫描的元素e大于v :则继续向前扫描。
- 当扫描的元素e小于v: