588-排序算法常见问题

在这里插入图片描述
算法库的头文件

问题1

在这里插入图片描述
sort源码:
在这里插入图片描述
(堆排序)
在这里插入图片描述

_Ideal是元素的个数
每次递归:_Ideal都要缩小
_Ideal来控制栈的深度,是为了让树趋于平衡的情况,如果超过这个,认为此时序列趋于有序,认为树的倾斜度高,而且如果元素过多,快排递归次数过多,会把栈撑破。此时每段序列比较短,适合堆排。
当递归达到 _Ideal<=0,而且此时元素量也比较少了,序列就短了,就把快排转为堆排序,空间复杂度是O(1)
如果用归并,占用额外的内存空间会比较多。
控制到1.5倍的log以2为底的n
在这里插入图片描述
(快速排序算法+插入排序算法)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

问题2

在这里插入图片描述
在这里插入图片描述

问题3

在这里插入图片描述
在sort源码,通过参数_Ideal(元素的个数)
在这里插入图片描述
每次递归,对_Ideal进行缩减,直到_Ideal<=0的时候,转成堆排序
在这里插入图片描述

问题4

在这里插入图片描述
效率变慢
递归是函数自己调用自己,调用一次函数,就有函数的开销(栈帧开辟,压很多东西,弹出很多东西,栈帧回退),如果递归过深,说明函数调用次数过多,函数开销变大,
栈内存相对来说比较小,递归过深,说明函数调用次数过多,导致栈内存溢出,程序挂掉
在这里插入图片描述

问题5

在这里插入图片描述
参考问题3的答案
没排完,转成另一个非递归的排序算法就可以了,一般用堆排序(平均,最坏,最好的时间复杂度都是一样的)

在这里插入图片描述

问题6

在这里插入图片描述
选择E:堆排序
在事先不了解数据特征,在最坏,最好,平均的时间复杂度都是O(nlogn)

问题7

在这里插入图片描述
只能原地排序,不能占用额外的内存空间,空间复杂度是O(1)
数据是1G,内存是1G
选择C归并排序(空间复杂度最大,1次只能排序1部分,没有排序的在磁盘上,磁盘I/O操作多)
在这里插入图片描述

问题8

在这里插入图片描述
选择A 归并排序
只有归并排序可以进行外排序(磁盘上的数据排序,其他排序算法都是内排序)
在这里插入图片描述
归并排序在这个场景怎么排?
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
外排序涉及的是磁盘I/O,效率比较低。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

林林林ZEYU

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

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

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

打赏作者

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

抵扣说明:

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

余额充值