将待排序列看成左右两个子序列,左子序列是有序的,右子序列是无序的,并且左序列中最大关键字(在左序列的最右边)小于右序列的最小关键字。排序的过程为:定义某个变量i指向最大关键字的下一个位置,在右序列中找到最小关键字k,将i和k交换。
直接选择排序
Linux:黑客传说
今年,Linux 迎来了它的20岁生日。据称从4月开始,全球各地都在筹划着如何庆祝这一生日。但到底哪一天才是这款史上惟一可与Windows比肩的电脑操作系统确切的 诞生之日,众说纷纭 ,有人说是1991年8月25日发明者本人李纳斯·托沃兹(Linus Torvalds)宣布项目启动那天,还有人认为应该是1991年10月5日Linux Kernel 0.02发布之日。“教父”本人在今年4月接受采访时倒是提出了4个有意义的日子:7月3日、8月25日、9月17日、10月5日,并且说,“哪天都可以”。看来,要给Linux一个不漏地过生日,得需要4个生日蛋糕!
一个优秀的提交应该包含什么
首先我们来听一个令人恶心的例子。
你看到问题 F00-123 被解决了。这是关于一个你自己很熟悉的子系统的Bug,所以直觉告诉你造成这个Bug最可能的原因。为了证实你的怀疑,你决定看看这个bug是怎么被解决的。你花了很长时间搜索了整个版本历史,直到把这个bugfix的范围缩小到了4个连续的提交,它们分别的提交信息是:dao小调整(dao tweaks)、moar、Fixes, 还有删除一些调试信息(remove debug stuff)。每个提交的修改集看起来都很大,多达十几个文件的几百处修改。“我艹尼@#$%%^&”,你准备骂娘但还是停住了,没有骂出你脑中那句最难听的粗口。”这个bugfix不应该超过三行代码!”。