Quick sort V.S. Merge sort

终于写完了这一章

本章全面地涉及了quick sort和merge sort的方方面面。同其他章节一样,即覆盖传统的imperative算法,也覆盖functional(函数式)算法。

首先展示的是著名的只有2行的Haskell快速排序算法。之后,针对Partition给出了一些小的改进。并且用两种方法严格证明了快速排序的平均性能。此后,我给出了各种著名的工程方法:2路partition, 3路parition (ternary quick sort),3点中值法,随机快速排序等等,最后通过deforestation给出快速排序和树排序的关系。

为了解决快速排序的worst case问题,本章接下来介绍merge sort。首先介绍basic version和复杂度分析。之后我给出O(N lg N)性能的in-place merge sort算法。
此后介绍针对单向链表的merge sort和奇偶-partition,前者用于imperative实现,后者用于functional实现。然后,我介绍nature merge sort并给出bottom-up merge sort可以认为是nature merge sort的一种特殊形式。

最后,我们简单介绍并发merge sort和quick sort。作为结尾,我介绍一种有趣的排序分类方法。

全文可以在下面连接下载。

https://github.com/liuxinyu95/AlgoXY/blob/algoxy/preview/dcsort-en.pdf?raw=true

猜你喜欢

转载自liuxinyu95.iteye.com/blog/1844476