关于几个算法时间问题

shengb1981 2009-11-21 09:17:30
近期学习了《算法导论》一书,后自己整理笔记,遇到一些概念搞晕了,请高人指点。

比如几个排序算法的运行时间分析:

插入排序:最好情况Ω(n) 最坏情况Θ(n^2) 平均情况Ο(n^2)
归并排序:最好情况Θ(nlgn) 最坏情况Θ(nlgn) 平均情况Θ(nlgn)
快速排序:最好情况Ο(nlgn) 最坏情况Θ(n^2) 平均情况Ο(nlgn)

而之前的《数据结构》一书中都是以Ο(n) Ο(n^2) Ο(nlgn)的形式出现的,到底哪个对,懵了~~~~
...全文
82 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
shengb1981 2009-11-23
  • 打赏
  • 举报
回复
谢谢各位的点拨,我会踏踏实实的学的!
hh_xj 2009-11-22
  • 打赏
  • 举报
回复
相信楼主都知道Ω,Θ,Ο,他们代表渐进性相同的一族函数。是一个函数集。Ω代表下界,Ο代表上界,这种表示法不是紧凑的,比如用O(nlgn)代表的算法运行时间实际上可能是 T(n) = Cn,但T(n)属于O(nlgn)。

计算算法的运行时间T(n)要算法的不同运行情况,有最好的情况和最坏的情况和我们期望的平均情况。我们用最坏情况来衡量算法性能。如果不加说明,O代表算法的最坏情况,Ω代表算法的最好表现,如果是Θ集,那么最好情况和最坏情况下的T(n)函数在渐进性上相同。比如快排T(n) = O(n^2)。但是如果加了一定的说明的话,如平均情况下,快排的T(n) = O(nlgn),这时的O仅代表在这种平均情况下得出的T(n)的渐进性。如果不加这个平均情况,这个T(n) = O(nlgn)容易让人误解,因为最坏情况下T(n) = Θ(n^2)。
总之,理解O, Θ, Ω的意义,和算法的运行细节,就可以判断了。

申明:词不达意!有错的话不要被我误导
linglongyouzhi 2009-11-21
  • 打赏
  • 举报
回复
同意这种看法,还是要理解算法的原理才是正道啊
[Quote=引用 1 楼 zhangxfeng112 的回复:]
LZ问这个问题,就知道你一点都没理解各个算法。。。
那就去看每种算法啊,来这问是不是想把高人的回答当标准答案或者是定理背下来呀?
那样有用么?你觉得有意思么?

别的不知道,我只知道什么时候,什么规模该选什么算法。。。

还有插入排序,它的时间主要是花费在移动数据上,折半查找可以忽略,所以时间复杂度计算的是移动次数,所以平均时间发杂读应该是Ο(n^2),可能是你之前看的书写错了,要么就是你记错了。
[/Quote]
perfecttt 2009-11-21
  • 打赏
  • 举报
回复
仔细的看看书吧,咬文嚼字,书上的是真理,别人说的不一定对。呵呵。
zhangxfeng112 2009-11-21
  • 打赏
  • 举报
回复
LZ问这个问题,就知道你一点都没理解各个算法。。。
那就去看每种算法啊,来这问是不是想把高人的回答当标准答案或者是定理背下来呀?
那样有用么?你觉得有意思么?

别的不知道,我只知道什么时候,什么规模该选什么算法。。。

还有插入排序,它的时间主要是花费在移动数据上,折半查找可以忽略,所以时间复杂度计算的是移动次数,所以平均时间发杂读应该是Ο(n^2),可能是你之前看的书写错了,要么就是你记错了。

33,008

社区成员

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

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