排序算法的比较

排序方法	平均时间		最坏情况		辅助空间
简单排序	O(N^2)		O(N^2)		O(1)
快速排序	O(NlogN)		O(N^2)		O(logN)
堆排序	O(NlogN)		O(NlogN)		O(1)
归并排序	O(NlogN)		O(NlogN)		O(n)
基数排序	O(d(n+rd))		O(d(n+rd))		O(rd)

(1) 从平均性能而言, 快速排序最佳,但在最坏情况下时间性能不如堆排序和归并排序。而后两者比较的结果是,在n较大时,归并速度更快,但空间消耗多
(2) "简单排序"包括除希尔排序之外的所有插入排序,起泡排序和简单选择排序,其中以直接插入排序最为简单,当序列基本有序或N的规模较小时,它是最佳的排序方法。因此常常将他和其他的排序方法,诸如快速排序、归并排序等结合在一起使用。
(3) 计数排序的时间复杂度也可携程O(d*n)。他是最适合于N值很大而关键字比较小的序列。若关键字也很大,而序列中大多数记录的"最高位关键字"均不同,则亦可先按"最高关键字"不同将序列分成若干"小"的子序列,而后进行直接插入排序。
(4) 稳定性。基数排序以及所有时间复杂度为O(N^2)的简单排序法也是稳定的,然而,快速排序、堆排序和希尔排序等时间性能较好的排序方法都是不稳定的。一般来说,排序过程中的"比较"是在"相邻连个记录"间进行的排序都稳定的。由于大多数情况下排序是按记录的主关键字进行的,则所用的排序方法是否稳定无关紧要。若排序按记录的次关键字进行,则应该根据问题所需慎重选择排序方法及其描述算法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值