首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >渐近分析问题

渐近分析问题
EN

Stack Overflow用户
提问于 2014-01-23 16:32:01
回答 2查看 2.8K关注 0票数 3

我在geeksforgeeks.org上发现了几个我似乎无法理解的问题(#1和#3)。我希望有人能帮我弄清楚答案:

澄清true/valid或false

1. QuickSort的时间复杂度为Θ(n^2)

我的回答是正确的,但它是错误的,为什么?如果快速排序的时间复杂度为O(n^2),并且我们知道快速排序(g(N))={ f(n),其中c1*g(n) <= f(N) <=c2*g(n)和n >= n0},那么这不是证明它是真的吗,因为c2*g(n)作为上界可以等于f(n)?

2. QuickSort的时间复杂度为O(n^2) -真

3.所有计算机算法的时间复杂度可以写成Ω(1)

这是真的,但我不明白为什么这是真的。一个搜索算法可以有一个Ω(1)的下界,假设我们在第一个元素上找到了我们正在寻找的东西,但是这如何适用于所有的计算机算法,比如最坏情况是O(n^2)的插入排序算法?

链接:http://www.geeksforgeeks.org/analysis-of-algorithms-set-3asymptotic-notations/

EN

回答 2

Stack Overflow用户

发布于 2014-01-23 19:15:22

QuickSort的时间复杂度是Nlog2( n ^2)-这意味着对于n的每个值,算法产生输出的时间是等于一个函数,它是f(N)=n^2。但我们知道对于快速排序,这不是真的,因为我们知道对于某些输入,快速排序的运行时间可能等于函数Θ(N)=nlogn。因此,我们需要说明“快速排序的最坏情况时间复杂度是Θ(n^2)”是最差的、最好的还是平均的case.It是正确的。

“QuickSort的时间复杂度是O(n^2)”-这意味着对于n的每个输入值,算法的运行时间至多是一个函数f(N)=n^2。这意味着存在一些输入,对于这些输入,算法的运行时间可能小于f(N)=n^2。我们知道快速排序的最佳时间复杂度是g(n)=nlogn .As g(n)< f(n).As这个语句涵盖了所有情况,因此该语句是正确的。

同样,说“quicksort的时间复杂度是nlogn”也是正确的,这意味着算法的运行时间至少是 nlogn,.becauseΩ。

“所有计算机算法的时间复杂度可以写成function.the (1)”-这里1表示常量时间time.which上面的陈述暗示:要执行任何计算机算法,我们需要一个最小常量Ω对于所有计算机算法都是正确的。

票数 4
EN

Stack Overflow用户

发布于 2014-01-23 16:36:33

对于QuickSort来说,最坏的情况是O(n^2)。但您希望它在O(n log n)时间内运行。因此,算法的运行时间因情况而异,您不能使用theta符号来给出算法的一般运行时间。

当然,任何算法的运行时间的下限都是常数时间(Ω(1))。它不一定要达到这个下限,但是算法应该运行,并且应该至少有一个操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21303023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档