快速排序的空间复杂度到底是多少?

net_assassin 2013-08-19 10:06:48
如题
有说 O(n) 有说 O(log n) 到底多少呢?
是不是,取决于分划基准的选择,每次都选在中间,O(log n)
若基本有序,退化为冒泡,O(n)
我理解的对不?
...全文
3732 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
BrightPi 2013-08-19
  • 打赏
  • 举报
回复
每次递归传参left,和right,平均递归次数是log(n)次,所以平均空间复杂度是O(log(n))。最坏的情况是O(n)(初始是逆序的情况)。
kernelkoder 2013-08-19
  • 打赏
  • 举报
回复
(nlog(n))
大尾巴猫 2013-08-19
  • 打赏
  • 举报
回复 2
O(log n),就是递归的深度,递归的时候使用的栈空间 稍微优化一点的快排,比如取首尾中三个数据,取其中间的值作为划分标准,不会出现退化到冒泡的可能。
_银月游侠_ 2013-08-19
  • 打赏
  • 举报
回复
引用 1 楼 ananluowei 的回复:
O(log n),就是递归的深度,递归的时候使用的栈空间 稍微优化一点的快排,比如取首尾中三个数据,取其中间的值作为划分标准,不会出现退化到冒泡的可能。
这种简单的优化也有可能退化到冒泡的。要确保不退化到冒泡,请参考算法导论第三版9.3章。

33,027

社区成员

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

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