急!急!时间复杂度

jyy243270803 2009-12-12 05:09:41
这两天看时间复杂度,很是头疼。
1.如果一个排序算法题目要我们求时间复杂度,到底是求最坏情况下的,还是平均的(我个人理解的时间复杂度只是数量级的问题,这两个的结果应该是一样的。不知道对不对,求教高手)
2.折半插入排序仅减少关键字比较次数,而记录的移动次数不变,所以折半插入排序和直接插入一样,时间复杂度为O(n2)……以上是书上原话。我的问题是,时间复杂度是比较次数+移动次数,还是两者间大的那个,为什么?
...全文
139 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jingyinggong 2009-12-14
  • 打赏
  • 举报
回复
顶起来。
PeacefulBY 2009-12-13
  • 打赏
  • 举报
回复
1、平均情况和最坏情况数量级有时会有不同,一般考虑平均意义下的,因为程序实际运行的时间还是取决于平均时间复杂度;除非最坏情况比较普遍,不过如果是这样的话一般平均时间复杂度也就等于最坏时间复杂度了
2、取更大那个,另一个和这个相比,只要差一个数量级,随着N的增大就可以忽略不计了
qiuzhenguang 2009-12-13
  • 打赏
  • 举报
回复
要看最坏情况出现得多,还是平均情况出现得多。比如快速排序,最坏情况复杂度为O(n2),出现得极少;所以更为关注它的平均情况复杂度O(n*lgn)
FancyMouse 2009-12-13
  • 打赏
  • 举报
回复
>如果一个排序算法题目要我们求时间复杂度,到底是求最坏情况下的,还是平均的
朴素快排,平均O(nlogn),最坏O(n^2)。一般情况下研究复杂度都是指worst-case。

>我的问题是,时间复杂度是比较次数+移动次数,还是两者间大的那个,为什么?
O(f+g)=max{O(f),O(g)}(用f+g<=2*max(f,g)证明)
wenzheng38 2009-12-12
  • 打赏
  • 举报
回复
时间复杂度是两者的数量和
wenzheng38 2009-12-12
  • 打赏
  • 举报
回复
算法一般情况下考虑的是平均时间复杂度,但也考虑最坏的情况
tian_zhi_dao 2009-12-12
  • 打赏
  • 举报
回复
虽然减少了比较次数 但是它的数量级还是n^2
所以复杂度为o(n2)

33,028

社区成员

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

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