这道题应该怎么做

mybydhn 2012-10-07 03:49:55
1.共有5个元素的数组,在使用快速排序算法对它排序的时候,最糟糕的情况下需要比较几次,最好的情况需要比较几次。。怎么算。。不太会。。


2.假设执行函数func()的时间复杂度为O(1),则下面代码的执行复杂度为
for(int i=0;i<n;i++)
for(int j=0;j<i;j++)
func();


有可能的话讲解的尽量详细点。。。
...全文
148 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
happytengfei 2012-10-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

2 1+2+3+。。。+n-1干嘛要去掉系数 怎么不是O(n^2/2)
[/Quote]

因为O(n^2/2)=O(n^2), 可以查一下O的定义
kingjo002 2012-10-10
  • 打赏
  • 举报
回复
2 1+2+3+。。。+n-1干嘛要去掉系数 怎么不是O(n^2/2)
huangxy10 2012-10-07
  • 打赏
  • 举报
回复
2,func的执行次数为T=1+2+3+。。。+n-1=n(n-1)/2=0.5*n^2-0.5*n
去掉系数和低次项,
所以是O(n^2)
huangxy10 2012-10-07
  • 打赏
  • 举报
回复
1,最好的情况是6次,最坏的情况是10次。
【1,2,3,4,5】;
如果每次都是取最后一个元素为中心轴就是最坏的情况,
第一轮需要比较4次,就是1,2,3,4,都有和5比较;
第二轮分解为[1,2,3,4]5,
这一轮取到了4,需要比较3次,就是123都要和4比较。
第三轮是2次,第四轮是1次。所以一共10次。

最好的情况是取中间的数作为中心轴,
第一轮还是4次;
第二轮分解为[1,2]3[4,5],
有两个小问题[1,2],[4,5];
每个小问题只要比较1次即可。
所以一共6次。
wutongye 2012-10-07
  • 打赏
  • 举报
回复
第二个复杂度为O(n^2)

33,008

社区成员

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

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