你还记得当年大学学的 Quicksort 吗?

2017-11-27 16:15:50 +08:00
 chanlion

周末复习了一下快速排序算法,从 wikipedia 和算法书上了解到与快速排序的多个方面,写成了一篇小短文作为笔记。现在给大家分享一下 :)

以下是一些历史描述:

Tony Hoare 在 1959 年做一个机器文本翻译工作时,需要一个排序算法使得在查字典前将所有的文本都排好序,然后直接查字典就行了。开始他尝试使用插入排序,结果太慢了,然后很快就想到了新算法—— Quicksort。等他做完这个项目回到英国时,他的老板跟他打赌 10 便士说“你这个算法肯定没有 shellsort 快”,可想而知,Hoare 赢了。其后再 Hoare 学习了 ALGOL 语言之后,他能够使用递归将他的快速排序算法发表在当时的顶尖计算机科学杂志上。因而,也获得了 1980 的图灵奖。

除此之外还简单介绍了算法过程,以及多个实现版本(以及它们之间的争论)。考虑到如何选取轴点和如何处理大量相当元素以及已经排好序的输入序列处理,有多个优化方案我都一一过了一遍。

写完之后的一个感受就是写的过程其实更加加深了对所学内容的理解。这正是我一直在做的事情,我把读过的书和理解过的知识自己整理出来。这是一项长期而系统工作,且期待若干年后会怎样。

博客的地址在此: http://mrlongx.com/index.php/2017/11/26/quicksort/

3030 次点击
所在节点    算法
3 条回复
lybtongji
2017-11-27 19:01:46 +08:00
中学到现在还记得
hackpro
2017-11-27 21:28:22 +08:00
好文 其实快排从分治的角度还是很好理解的
arzterk
2017-12-27 17:14:14 +08:00
C 里面最简单的是那个查找表排序,很符合人类习惯;
ps,快排用 haskell 写也很容易理解

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/409949

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX