直接插入排序、希尔排序、 冒泡排序 、快速排序 、直接选择排序、 堆排序 、归并排序 、基数排序的比较

排序方法

平均时间复杂度

最  坏

最  好

辅助空间

稳定性

直接插入排序

O(n2)

O(n2)

O(n)

O(1)

稳定

希尔排序

O(n1.5)

 

 

O(1)

不稳定

冒泡排序

O(n2)

O(n2)

O(n)

O(1)

稳定

快速排序

O(nlog2n)

O(n2)

同平均

O(log2n)

不稳定

直接选择排序

O(n2)

O(n2)

同平均

O(1)

不稳定

堆排序

O(nlog2n)

同平均

同平均

O(1)

不稳定

归并排序

O(nlog2n)

同平均

同平均

O(n)

稳定

基数排序

O(d(n+rd))

同平均

同平均

O(n+rd)

稳定

直接插入排序、冒泡排序、直接选择排序都是简单的排序方法

希尔排序、快速排序、堆排序、归并排序都是改进型的排序方法

按待排序记录所在位置

内部排序:待排序记录存放在内存

外部排序:排序过程中需对外存进行访问的排序

按排序依据原则

插入排序:直接插入排序、折半插入排序、希尔排序

交换排序:冒泡排序、快速排序

选择排序:简单选择排序、堆排序

归并排序:2-路归并排序

基数排序

按排序后关键字相等的记录的相对位置

稳定排序

不稳定排序

按排序所需工作量

简单的排序方法:T(n)=O(n²)

先进的排序方法:T(n)=O(log2n)

基数排序:T(n)=O(d*n)

你可能感兴趣的:(数据结构)