BEIJING TIME:2022-10-18 10-54-14

排序比较

各种排序方法的比较

排序方法 时间复杂度(最好) 时间复杂度(最坏) 时间复杂度(平均) 空间复杂度   稳定性 附述
直接插入排序 O(n) O(n2) O(n2) O(1) 稳定

1.适用于顺序和链式存储结构。

2.更适合初始记录基本有序(正序)并且n较小的情况,当n较大时,时间复杂度较高,不宜采用。

折半插入排序 O(nlog2n) O(n2) O(n2) O(1) 稳定

1.折半查找只能用顺序结构,不能用链式结构。

2.就平均性能来说,折半插入排序优于直接插入排序。

3.移动次数和直接插入排序相同,依赖于对象的初始排列。

4.适用于初始记录无序,n较大的情况。

希尔排序     O(n1.3) O(1) 不稳定

1.只能用顺序结构,不能用链式结构。

2.总的比较次数和移动次数都比直接插入排序少,n越大越明显。

3.适用于初始记录无序,n较大的情况。

冒泡排序 O(n) O(n2) O(n2) O(1) 稳定

1.可用于链式存储结构。

2.平均时间性能比直接插入排序差。

3.当初始记录无序,n较大时,不宜采用。

快速排序 O(nlog2n) O(n2) O(nlog2n) O(nlog2n) 不稳定

1.适用于顺序结构,很难用于链式结构。

2.快速排序是递归的,需要一个栈存放数据。最大递归调用次数与递归树的深度一致。

3.当n较大时,在平均情况下快速排序是所有内部排序方法中速度最快的一种。

4.快速排序时排序算法中平均性能最好的一种排序。

5.空间复杂度:O(log2n)(最好)、O(nlog2n)(平均)、O(n)(最坏)。

6.适用于初始记录无序,n较大的情况。

简单选择排序 O(n2) O(n2) O(n2) O(1) 不稳定

1.可用于链式存储结构。

2.就选择排序方法本身来讲,它是一种稳定的排序方法。

2.移动记录次数较少,当每一记录占用的空间较多时,此方法比直接插入排序快。

堆排序 O(nlog2n) O(nlog2n) O(nlog2n) O(1) 不稳定

1.只能用顺序结构,不能用链式结构。

2.平均性能接近于最坏性能。

3.时间复杂度不受数据初始状态影响而恒为O(nlog2n)。

4.记录较少时不宜采用,当记录较多时较为高效。

归并排序 O(nlog2n) O(nlog2n) O(nlog2n) O(n) 稳定

1.适用于顺序和链式存储结构。

2.用顺序表实现时,需要和待排记录个数相等的辅助存储空间。

3.用于链式结构时,不需要附加存储空间,但递归实现时仍需要开辟相应的递归工作栈。

基数排序 O(d(n+rd)) O(d(n+rd)) O(d(n+rd)) O(n+rd) 稳定

1.适用于顺序和链式存储结构。

2.需辅助空间为2rd个队列,加n个指针域的空间。

 

 

稳定性:

归并排序     最稳定      (快速排序,堆排序)      

 

堆排序:

1.设有5000个待排序的记录关键字,如果需要用最快的方法选出其中最小的10个记录关键字,则用堆排序可以达到此目的。

2.设某堆中有n个结点,则在该堆中插入一个新结点的时间复杂度为O(log2n)。

 

二叉排序树:

在有n个结点的二叉排序树上查找结点的平均时间复杂度为O(log2n)。

 

分块查找:

1.分块查找的平均查找长度不仅与索引表的长度有关,而且与块的长度有关。

2.分块查找的基本思想是首先在索引表中进行查找,以便确定给定的关键字可能存在的块号,然后再在相应的块内进行顺序查找。

 

表头结点:

单链表的第一个放有关顶点 的信息,其余结点放边的信息。

 

完全图:

1.无向完全图:无向图,具有n(n-1)/2条边。

2.有向完全图:有向图,具有n(n-1)条弧。

 

图:

1.连通图:在无向图中,任意顶点Vi到Vj都是连通的。

2.联通分量:极大连通子图。

3.强连通图:在有向图中,每一对顶点Vi到Vj,Vj到Vi,都存在路径。

4.强连通分量:有向图的极大强连通子图。

 

posted @ 2022-10-18 00:15  天基系统  阅读(50)  评论(0)    收藏  举报