一直以来都认为快速排序是最优的排序算法,所以认为STL中的sort函数也采用快速排序,但事实好像复杂的多。
1 问题思考
- 数据量大和数据量小都适合用快速排序吗?
- 递归过深会引发什么问题?
- 怎么控制递归深度?如果达到递归深度了还没排完序怎么办?
2 问题解答
- 数据量小不适合用快速排序,因为频繁的递归调用会带来额外的负担;
- 递归过深容易引起堆栈溢出;
- 当递归层次过深时,该换堆排序,因为堆排序的时间复杂度恒为Ο(nlogn);
3 STL中的sort
STL中的sort结合了快速排序、堆排序和直接插入排序(排序算法的详细介绍参见排序算法的性能分析 - BeLady - 博客园 (cnblogs.com),基本的流程如下图:
简单来说就是,设置一个长度阈值
本人研究牲一枚,敬请各位大佬批评指正~~~
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报