2011-03-06 算法导论 第8章 线性时间排序

来源:互联网 发布:电脑如何移动软件 编辑:程序博客网 时间:2024/06/09 02:43

 

    在此之前,算法导论中讲到的排序都是比较排序——通过元素之间的比较来确定某个元素的位置。书中先是证明了比较排序的下限运行时间是O(nlgn),接下来,介绍了几个不通过比较来排序的算法:计数排序,基数排序,桶排序。当然在这些算法的实现中,有的还是用到了比较排序作为中间过程的。

         计数排序:计数排序的思想是,对于一个数组中的元素,排序之后,它的位置应该与数组中小于或等于它的元素的个数相关。因此,对于每一个元素,算法先是计算出数组中小于或等于它的元素个数count,并用一个数组将这个count保存起来。然后再根据这些信息确定每个元素的最终位置。这样,数组就完成了排序。

         大致的过程就是这样,很简单,当然,怎么计算这个count,可能也有很多不同的方法,下面给出一种实现。

 

    书中之后讲解了基数排序和桶排序,都比较简单,但是实现起来还是比较麻烦的,所以就没有去试。