排序算法扫盲

来源:互联网 发布:ubuntu引导进入win7 编辑:程序博客网 时间:2024/06/07 03:37

插入类排序:

直接排序,折半插入排序,希尔增量排序;

交换类排序:

冒泡排序,快速排序(分治思想);

选择类排序:

简单选择排序,堆排序(建堆是关键,还必须插入和调整);

归并排序:

二路归并排序,多路归并排序(多路归并排序多用在外部排序上);

基数类排序:

桶排序(桶排序的分到这里可能不太准确);

外部排序(多路归并排序和败者树,伴随有I/O过程,比较复杂)。


内部排序和外部排序的分类依据:排序是否在内存中。一般的排序算法都是基于比较的,而基数排序时例外。

排序的时间复杂度一般有比较和移动的次数有关。

n个关键字的序列,至少得经过log(n!)比较:

比如有n个元素,每次比较的话有两种可能,假设共计得比较t次,则有2^t种可能性,而n个元素的比较树是n!种,2^t=n!,得t=log(n!)。


盗图http://gengning938.blog.163.com/blog/static/128225381201141121326346/:

排序算法性能分析 - 枫叶 - 枫叶

0 0