排序算法总结

排序的稳定性

经过对总分的降序排序后,总分高的排在前列。,此时对于令狐冲和张无忌而言,未排序时是令狐冲在前,那么他们总分排序后,分数相等的令狐冲依然应该在前,这样才算是稳定的排序,如果他们二者颠倒了,则此排序是不稳定的了。

排序算法总结

根据排序过程中借助的主要操作,我们将内排序分为:插入排序、交换排序、选择排序和归并排序四类。

 

将七种算法的各种指标进行对比

 

从算法的简单性来看,我们将七种算法分为两类:

简单算法:冒泡、简单选择、直接插入。

改进算法:希尔、堆、归并、快速。


 

从平均情况来看,显然最后三种改进算法要胜过希尔排序,并远远胜过前三种简单算法。


从最好情况看,反而冒泡和直接插入排序要更胜一筹,也就是说,如果你的待排序序列总是基本有序,反而不应该考虑四种复杂的改进算法。


从最坏的情况看,堆排序与归并排序又强过快速排序以及其他简单排序


从这三组时间复杂度的数据对比中,我们可以得出这样一个认识。堆排序和归并排序就像两个参加奥数考试的优等生,心理素质强,发挥稳定。而快速排序像是很情绪化的天才,心情好时表现极佳,碰到较糟糕环境会变得差强人意。但是他们如果都来比赛计算个位数的加减法,他们反而算不过成绩极普通的冒泡和直接插入。


从空间复杂度来说 ,归并排序强调马要跑得快,就得给马吃个饱。快速排序也有相应的空间要求,反而堆排序等都是少量索取,大量付出,对空间要求是O(1)。如果执行算法的软件所处的环境非常在乎内存使用量多少时,选择归并排序和快速排序就不是一个较好的决策了。


从稳定性来看,归并排序独占鳌头,对于非常在乎排序稳定性的应用中,归并排序是个好算法


 从待排序记录的个数上来说,待排序的个数n越小,采用简单排序方法越合适。反之,n越大,采用改进排序方法越合适。这也是为什么对快速排序优化时,增加了一个阀值,低于阀值时换作直接插入排序的原因。


对于数据量不是很大而记录的关键字信息量较大的排序要求,简单排序算法是占优的。另外,记录的关键字信息量大小对那四个改进算法影响不大。

 


总之,从综合各项指标来说,经过优化的快速排序是性能最好的排序算法,但是,不同场合我们也应该考虑使用不同的算法来应付它


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值