作者:mobiledu2502916457 | 来源:互联网 | 2022-12-13 10:48
近期学习了《算法导论》一书,后自己整理笔记,遇到一些概念搞晕了,请高人指点。比如几个排序算法的运行时间分析:插入排序:最好情况Ω(n)最坏情况Θ(n^2)平均情况Ο(n^2)归
近期学习了《算法导论》一书,后自己整理笔记,遇到一些概念搞晕了,请高人指点。
比如几个排序算法的运行时间分析:
插入排序:最好情况Ω(n) 最坏情况Θ(n^2) 平均情况Ο(n^2)
归并排序:最好情况Θ(nlgn) 最坏情况Θ(nlgn) 平均情况Θ(nlgn)
快速排序:最好情况Ο(nlgn) 最坏情况Θ(n^2) 平均情况Ο(nlgn)
而之前的《数据结构》一书中都是以Ο(n) Ο(n^2) Ο(nlgn)的形式出现的,到底哪个对,懵了~~~~
5 个解决方案
LZ问这个问题,就知道你一点都没理解各个算法。。。
那就去看每种算法啊,来这问是不是想把高人的回答当标准答案或者是定理背下来呀?
那样有用么?你觉得有意思么?
别的不知道,我只知道什么时候,什么规模该选什么算法。。。
还有插入排序,它的时间主要是花费在移动数据上,折半查找可以忽略,所以时间复杂度计算的是移动次数,所以平均时间发杂读应该是Ο(n^2),可能是你之前看的书写错了,要么就是你记错了。
仔细的看看书吧,咬文嚼字,书上的是真理,别人说的不一定对。呵呵。
相信楼主都知道Ω,Θ,Ο,他们代表渐进性相同的一族函数。是一个函数集。Ω代表下界,Ο代表上界,这种表示法不是紧凑的,比如用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, Θ, Ω的意义,和算法的运行细节,就可以判断了。
申明:词不达意!有错的话不要被我误导