终于写完了这一章
本章全面地涉及了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
Quick sort V.S. Merge sort
猜你喜欢
转载自liuxinyu95.iteye.com/blog/1844476
今日推荐
周排行