快速排序

sunner008 2010-06-13 08:20:45
T(0)=0,T(n)=(n-1)+T(⌊(n+1)/2⌋)+T(⌈(n-1)/2⌉),n>=1
这个快速排序的渐进式怎么导出O(nlogn)呢?
...全文
63 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunner008 2010-06-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 michael122 的回复:]
没有区别啊
渐进意义上都是一样的
nlog(n+1)=O(nlogn)
[/Quote]
哦,原来如此太谢谢您了,又向您学习到了。
michael122 2010-06-13
  • 打赏
  • 举报
回复
没有区别啊
渐进意义上都是一样的
nlog(n+1)=O(nlogn)
sunner008 2010-06-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 michael122 的回复:]
算法导论中主定理的应用,证明如下:
可以写成 T(n)<=2*T(n/2)+c*n c是一个常数
则 T(n)<=2*T(n/2)+cn
<=2*(2T(n/4)+c*n/2)+cn
=4T(n/4)+2cn
<=8T(n/8)+3cn
....
<=2^k * T(n/(2^k))+k*cn
这样一直到k=logn时,上式=n*T(1)+c*nlogn=O(n……
[/Quote]
但是这个是n的情况能证明出来,我那个是n-1的情况按这种方法我证明出来的是nlog(n+1)这肯定是不对,不知请求高手可否在n-1的情况下帮我证明呢?
michael122 2010-06-13
  • 打赏
  • 举报
回复

算法导论中主定理的应用,证明如下:
可以写成 T(n)<=2*T(n/2)+c*n c是一个常数
则 T(n)<=2*T(n/2)+cn
<=2*(2T(n/4)+c*n/2)+cn
=4T(n/4)+2cn
<=8T(n/8)+3cn
....
<=2^k * T(n/(2^k))+k*cn
这样一直到k=logn时,上式=n*T(1)+c*nlogn=O(nlogn)

当然,如果知道结果的话也可以用数学归纳法证明,一样很简单

33,007

社区成员

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

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