关于快速排序性能的疑问

司青-已停止更新 2013-01-27 07:33:05
快排理论上平均速度是所有排序中最快的,但在实际应用当中,由于高级语言的限制,要用递归来实现。这样一来就有了重复调用函数的时间开销,快速排序的速度优势就没有了啊。

stdlib中的qsort函数内部是不是通过递归实现的?
...全文
155 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
kosora曹 2013-01-28
  • 打赏
  • 举报
回复
“重复调用函数”主要是内存的开销,对时间的影响并不大;另外,“归并排序”是“以牺牲空间的代价减少时间”的典型排序,所以经常用于外部排序(因为硬盘的大小几乎是无限的);如果要考虑节省内存,堆排序是比较合适的算法,整个排序只需要一个全局变量int temp用于swap操作;还有,快速排序是可以转换为非递归的,方法是自顶向下对空间树进行层序遍历;归并也可以转换为非递归,通过队列操作,自底向上依次生成父节点,直到根节点,空间树接近完全二叉树。
kernelkoder 2013-01-28
  • 打赏
  • 举报
回复
太高深了,不懂啊
FancyMouse 2013-01-28
  • 打赏
  • 举报
回复
>这样一来就有了重复调用函数的时间开销,快速排序的速度优势就没有了啊。 我笑笑。 >stdlib中的qsort函数内部是不是通过递归实现的? libc里的qsort没看过。STL的sort你能想到的库都是。
dracularking 2013-01-28
  • 打赏
  • 举报
回复
引用 4 楼 cnmhx 的回复:
在现有的软件中,高级语言实现快速排序,鲜有用递归来实现的。
+1 虽然没有实际调研过,但是高级语言就为什么非要用递归实现呢?感觉很站不住脚。
cnmhx 2013-01-28
  • 打赏
  • 举报
回复
在现有的软件中,高级语言实现快速排序,鲜有用递归来实现的。

33,010

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧