排序算法 常见问题2

快速排序递归时,怎样解决递归层次过深问题?

        在sort源码,通过参数_Ideal(元素的个数)

在这里插入图片描述

        每次递归,对_Ideal进行缩减,直到_Ideal<=0的时候,转成堆排序

在这里插入图片描述

递归过深会引发什么问题?

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

在这里插入图片描述

怎样控制递归深度?如果达到递归深度了,还没有排完怎么办?

        没排完,转成另一个非递归的排序算法就可以了,一般用堆排序(平均,最坏,最好的时间复杂度都是一样的)。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值