常见排序算法总结

来源:互联网 发布:夜狸猫事件 知乎 编辑:程序博客网 时间:2024/06/06 21:00

    排序算法经过了很长时间的演变,产生了很多种不同的方法。对于初学者来说,对它们进行整理便于理解记忆显得很重要。每种算法都有它特定的使用场合,很难通用。因此,我们很有必要对所有常见的排序算法进行归纳。

    我不喜欢死记硬背,我更偏向于弄清来龙去脉,理解性地记忆。比如下面这张图,我们将围绕这张图来思考几个问题。


     上面的这张图来自一个PPT。它概括了数据结构中的所有常见的排序算法。现在有以下几个问题:

     1、每个算法的思想是什么? 
     2、每个算法的稳定性怎样?时间复杂度是多少? 
     3、在什么情况下,算法出现最好情况 or 最坏情况? 
     4、每种算法的具体实现又是怎样的?

     这个是排序算法里面最基本,也是最常考的问题。详细算法介绍见其他排序算法的帖子。

排序算法总结:

(1) 一般来说,当数据规模较小时,应选择直接插入排序或者冒泡排序。任何排序算法在数据量小时基本体现不出差距。

(2) 考虑数据的类型,比如全部是正整数时,应该考虑使用桶排序。

(3) 考虑数据已经有序,快速排序是一种不稳定的排序(当然可以改进)。对于大部分排好序的数据,快速排序会浪费大梁不必要的步骤。我们说快速排序好,是指大梁随机数据下,使用快速排序的效果最理想,而不是指所有情况。

0 0