详解经典排序算法
插入排序:将元素不断插入已经排好序的array中 性能:最好情况O(n)、平均情况O(n^2)、最坏O(n^2)
快速排序:不断分割序列直到序列整体有序 性能:最好情况O(nlogn):每次选择的都是中位数、平均情况O(nlogn)、最坏O(n^2)
堆排序:利用堆的性质形成的排序算法 性能:最好情况O(nlogn)、平均情况O(nlogn)、最坏O(n*logn)
从零开始打造pdsort
版本1
版本2
优化Pivot:
短序列<8:采样三个元素
中序列<=50:采样三个元素,使用这三个元素中的中位数
中序列>50:采样九个元素,使用这些元素中的中位数
最终版:针对重复元素很多的情况 两次生成的pivot相同,认为重复元素很多 最终版本图片,黄色为可选项,在有序或者逆序情况下相比Go默认排序算法提升十倍速度,其他情况下提升10%-50%。