排序小结

排序目录


复杂度总结

  • 时间复杂度
    1)平均情况下,快速排序、希尔排序(复杂度了解即可)、归并排序和堆排序的时间复杂度均为O(nlog2n),其他都是O(n2)。一个特殊的是基数排序,其时间复杂度为O(d(n+rd))
    2)最坏情况下,快速排序的时间复杂度为O(n2),其他都和平均情况下相同。
    故事助记:如军训时,教官说:“ 快些以 nlog2n 的速度归队。” 其中,“快” 指快速排序,“些” 指希尔排序(发音近似),“归” 指归并排序,“队” 指堆排序(谐音),这 4 种排序的平均时间复杂度都是O(nlog2n)

  • 空间复杂度
    记住几个特殊的就好,快速排序为O(log2n),归并排序为O(n),基数排序为O(rd),其他都是O(1)

  • 其他
    直接插容易插变成O(n),起泡起得好变成O(n),所谓 “容易插” 或 “起得好” 都是指初始序列已经有序


算法稳定性总结

一句话记忆:“考研复习痛苦啊,情绪不稳定,快些选一堆好友来聊天吧”
这里,“快” 指快速排序,“些” 指希尔排序,“选” 指简单选择排序,“堆” 指堆排序,这4种是不稳定的,其他自然都是稳定的


其他细节(与排序原理有关)

  • 经过一趟排序,能够保证一个关键字到达最终位置,这样的排序是交换类的那两种(起泡、快速)和选择类的那两种(简单选择、堆)
  • 排序算法的关键字比较次数和原始序列无关——简单选择排序和折半插入排序
  • 排序算法的排序趟数和原始序列有关——交换类的排序。

再次比较一下直接插入排序和折半插入排序

二者最大的区别在于查找插入位置的方式不同。直接插入按顺序查找的方式,而折半插入按折半查找的方式。这里将排序和查找两章的内容结合,大家在复习时也应该融会贯通,计算机的知识都是相通的


一个有用的结论

借助于“比较”进行排序的算法,在最坏情况下的时间复杂度至少为O(nlog2n)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

头疼小宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值