实现思路
quicksort: 选定一个pivot, 根据pivot大小各方一边;然后进行迭代,把每一边用同样的方式变为有序的。
mergesort: 切一半,左边和右边同时迭代mergesort, 最后再用merge operation将两边合并。
算法分析比较
- quicksort平均起来更快,但worst case中每一个pivot都可会选到最差的,从而变成O(n^2) complexity;平均来说两个算法的复杂度都是O(nlogn)
- mergesort中每一个sort好的小块儿要单独储存,从而造成O(n)的memory开销;quicksort可以sort in place。
- 上面的一点也解释了为什么mergesort在现代软件上较慢:现代软件random access的速度很快,开销也很小而mergesort其实没有利用这点,没个merge operation都重建了一个list/array。所以如果没有random access这个特性 (linked list) 或者通常来说slow to access sequential media,merge sort会是最好的选择。顺便提一下,在linked list的情况下,merge sort的额外内存开销是O(1)。

本文对比了快速排序和归并排序两种算法的特点及适用场景。快速排序通过选取基准值进行分区递归实现排序,平均效率高但在最坏情况下退化为O(n^2)。归并排序采用分治策略,确保稳定且复杂度始终为O(nlogn),但需额外O(n)的空间成本。
443

被折叠的 条评论
为什么被折叠?



