数据结构算法之排序系列Java、C源码实现(9)--总结

类别

排序方法

平均情况

最好情况

最坏情况

辅助存储

稳定性

插入排序

直接插入

0(n2)

O(n)

0(n2)

O(1)

稳定

希尔排序

0(n1.3)

O(n)

0(n2)

O(1)

不稳定

选择排序

直接选择

0(n2)

0(n2)

0(n2)

O(1)

不稳定

堆排序

O(nlog2n)

O(nlog2n)

O(nlog2n)

O(1)

不稳定

交换排序

冒泡排序

0(n2)

O(n)

0(n2)

O(1)

稳定

快速排序

O(nlog2n)

O(nlog2n)

0(n2)

O(nlog2n)

不稳定

归并排序

O(nlog2n)

O(nlog2n)

O(nlog2n)

O(n)

稳定

基数排序

O(d(n+rd))

O(d(n+rd))

O(d(n+rd))

O(rd)

稳定


简单排序:除希尔排序之外的所有插入排序、冒泡排序和直接选择排序,其中以直接插入排序最为简单).

插入排序:直接插入排序(稳定)、希尔排序(不稳定)

选择排序:直接选择排序(不稳定)、堆排序(不稳定)

交换排序:冒泡排序(稳定)、快速排序(不稳定)。

归并排序:稳定

 

基数排序:链式的基数排序(稳定),不需要进行关键字之间的比较。

在平均情况下和最坏情况下的时间复杂度是

一样的排序方法有:简单排序(除希尔排序之

外的所有插入排序、冒泡排序和直接选择排

序,其中以直接插入排序最为简单)――O(n2)、

堆排序(O(nlog2n))、归并排序O(nlog2n))、

基数排序(O(d(r+n)))。


 

1.从平均时间性能而言,快速排序最佳,其所需要的时间最省,但快速排序在最坏情况下的时间性能不如堆排序和归并排序。而后两者相比较的结果是,在n较大时,归并排序所需要的时间较堆排序省,但它所需要的辅助存储量最多。

2.一般来说,排序过程中的“比较”是在“相邻的两个记录关键字”间进行的排序方法是稳定的。

3.任何一个借助“比较”进行排序的算法,在最坏情况下所需要进行的比较次数至少为。然而,这只是一个理论上的下届,一般的排序算法在n>4时所需进行的比较次数均大于此值。归并排序在n<11时所用的比较次数为。当需排序的数很多时,接近于O(nlog2n))。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值