基于Python3的数据结构与算法 - 08 NB三人组小结

本文主要讨论了快速排序、归并排序和堆排序三种常见排序算法的时间复杂度,指出快速排序在极端情况下效率低,归并排序需额外内存,堆排序相对较慢。同时,强调了递归导致的快速排序空间复杂度以及稳定性在排序中的重要性,特别提到了比较排序(如稳定的排序)的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、总结

  • 三种排序算法得时间复杂度都是O(nlogn)  (存在常数之间的差异)
  • 一般情况下,就运行时间而言:快速排序 < 归并排序 < 堆排序
  • 三种方法的缺点:
  1. 快速排序:极端情况下排序效率低
  2. 归并排序:需要额外的内存开销
  3. 堆排序:在快的排序算法中相对较慢

递归需要消耗空间,因为快速排序采用递归,因此其空间复杂度平均为logn(递归走logn层),当遇到最坏情况为n(当为倒序的情况) 

稳定性指的是:当两个元素的数值一样的时候,保证他们之间的相对位置不变。

例如对一个列表[3,2,1,2,4]排序,排序之后第一个2还位于第二个2的前面。

或者有一组字典:分别位于第1,2,3行

{'name':’a‘, 'age':'18'}
{'name':’b‘, 'age':'20'}
{'name':’a‘, 'age':'25'}

现在根据年龄对其排序,如果是有序的排序则:

{'name':’a‘, 'age':'18'}

{'name':’a‘, 'age':'25'}
{'name':’b‘, 'age':'20'}

需要保证两个a年龄之间的距离保持不变。 

有顺序的挨个交换位置的排序(比较排序),都为稳定排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一道秘制的小菜

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

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

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

打赏作者

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

抵扣说明:

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

余额充值