Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm Cormen关于插入排序的矛盾_Algorithm_Sorting_Big O_Time Complexity - Fatal编程技术网

Algorithm Cormen关于插入排序的矛盾

Algorithm Cormen关于插入排序的矛盾,algorithm,sorting,big-o,time-complexity,Algorithm,Sorting,Big O,Time Complexity,在科曼定理3.1中说 例如,插入排序的最佳情况运行时间是big omegan,而插入排序的最坏情况运行时间是big ohn^2。 因此,插入排序的运行时间介于big omegan和Bigohn^2之间 现在,如果我们看练习3.1-6,它会问 证明了当算法的最坏情况下的运行时间为大ohgn,最佳情况下的运行时间为大omegagn时,算法的运行时间为大thetagn 我是唯一一个在这里看到矛盾的人。 我的意思是,如果我们遵守必须被证明的问题,我们得出结论,对于渐近紧的界fn=Big thetagn,

在科曼定理3.1中说

例如,插入排序的最佳情况运行时间是big omegan,而插入排序的最坏情况运行时间是big ohn^2。 因此,插入排序的运行时间介于big omegan和Bigohn^2之间

现在,如果我们看练习3.1-6,它会问

证明了当算法的最坏情况下的运行时间为大ohgn,最佳情况下的运行时间为大omegagn时,算法的运行时间为大thetagn

我是唯一一个在这里看到矛盾的人。 我的意思是,如果我们遵守必须被证明的问题,我们得出结论,对于渐近紧的界fn=Big thetagn,对于算法的最佳情况,我们需要fn=Big omegagn,对于算法的最坏情况,我们需要Big ohgn 但在插入排序的情况下,最佳情况时间复杂度是大omegan,最坏情况时间复杂度是大ohn^2
没有矛盾,因为CLR没有提到插入排序是θ^2。

没有矛盾,因为CLR没有提到插入排序是θ^2。

这里没有矛盾。这个问题只是为了证明大Thetagn是由大Ogn和大Omegagn渐近紧束缚的。如果你证明了这个问题,你只证明了一个函数在大的Thetagn中运行,当且仅当它在大的Ogn和大的Omegagn之间运行

插入排序从大Omegan运行到大Ohn^2,因此插入排序的运行时间不能紧密绑定到大θ^2


事实上,CLR从不使用大θ^2来紧密绑定插入排序。

这里没有矛盾。这个问题只是为了证明大Thetagn是由大Ogn和大Omegagn渐近紧束缚的。如果你证明了这个问题,你只证明了一个函数在大的Thetagn中运行,当且仅当它在大的Ogn和大的Omegagn之间运行

插入排序从大Omegan运行到大Ohn^2,因此插入排序的运行时间不能紧密绑定到大θ^2


事实上,CLRS从不使用大θ^2来进行紧密绑定插入排序。

我想您在这里有点困惑。让我为您澄清几点

运行时间可以指两件事:程序的实际运行时间,或有界函数,如θ或大Oh。因此,为了避免混淆,可以调用此时间复杂度。下面我们将使用运行时间表示程序的实际运行时间,时间复杂度表示大Oh/θ符号

拿起大哦,读我的答案

一旦你清楚了Big Oh,其他函数就很容易就位。当我们说Tn是Omegagn时,我们的意思是在某个点k的右边,曲线c.gn从下面限定运行时间曲线。或者换句话说:

T(n)>=c.g(n) for all n>=k, and for some constant c independent of input size.
θ表示法就像是说我只是一个函数,但是使用不同的常数,你可以让我从上面和下面来限制运行时间曲线

所以当我们说Tn是tagn时,我们的意思是

c1.gn==k

现在我们知道了函数的含义,让我们看看CLR在混乱中的位置

例如,插入排序的最佳情况运行时间是big omegan,而插入排序的最坏情况运行时间是big ohn^2。因此,插入排序的运行时间介于big omegan和Bigohn^2之间

这里所说的运行时间CLRS指的是实际运行时间Tn。它的措辞很糟糕,你误解了这一点不是你的错。事实上,我会继续说,他们错了。没有什么像介于两者之间,函数要么在集合Ogn中,要么不在集合Ogn中。所以这是一个错误

证明了当算法的最坏情况下的运行时间为大ohgn,最佳情况下的运行时间为大omegagn时,算法的运行时间为大thetagn


这里的CLRS是指运行时间函数Tn,他们希望您计算出时间复杂度。

我认为您在这里有点困惑。让我为您澄清几点

运行时间可以指两件事:程序的实际运行时间,或有界函数,如θ或大Oh。因此,为了避免混淆,可以调用此时间复杂度。下面我们将使用运行时间表示程序的实际运行时间,时间复杂度表示大Oh/θ符号

拿起大哦,读我的答案

一旦你清楚了Big Oh,其他函数就很容易就位。当我们说Tn是Omegagn时,我们的意思是在某个点k的右边,曲线c.gn从下面限定运行时间曲线。或者换句话说:

T(n)>=c.g(n) for all n>=k, and for some constant c independent of input size.
θ表示法就像是说我只是一个函数,但是使用不同的常数,你可以让我从上面和下面来限制运行时间曲线

所以当我们说Tn是tagn时,我们的意思是

c1.gn==k

现在我们知道了函数的含义,让我们看看CLR在混乱中的位置

例如,插入排序的最佳运行时间是big omegan,而最坏的运行时间是tim 插入排序的e是大的ohn^2。因此,插入排序的运行时间介于big omegan和Bigohn^2之间

这里所说的运行时间CLRS指的是实际运行时间Tn。它的措辞很糟糕,你误解了这一点不是你的错。事实上,我会继续说,他们错了。没有什么像介于两者之间,函数要么在集合Ogn中,要么不在集合Ogn中。所以这是一个错误

证明了当算法的最坏情况下的运行时间为大ohgn,最佳情况下的运行时间为大omegagn时,算法的运行时间为大thetagn


这里CLRS指的是运行时间函数Tn,他们希望您计算出时间复杂度。

但它确实说这并不矛盾,但是说插入排序的最坏情况运行时间是大omegan^2,这意味着最坏情况下的θ^2。但它确实说这并不矛盾,然而,要说插入排序的最坏情况运行时间是big omegan^2,这意味着在最坏情况下θ^2。所以让我直截了当地说,对于big oh符号,我们看到最坏情况,对于big omega符号,我们看到最好情况。对,不一定。没有硬性规定,最好的情况用大ω表示,最坏的情况用大O表示。很抱歉,听起来有点固执,但从逻辑上讲,最好的情况复杂性会给我们下限,我的意思是,在插入排序中,如果数组已经排序,循环运行n次而不是n^2,因此,它不会充当下限吗?Big-O、Big Omega等是定义函数的不同方式。算法的最佳情况和最坏情况运行时间是两个不同的函数。让我来澄清一下,对于大oh符号,我们看到最坏情况,对于大omega符号,我们看到最佳情况。对,不一定。没有硬性规定,最好的情况用大ω表示,最坏的情况用大O表示。很抱歉,听起来有点固执,但从逻辑上讲,最好的情况复杂性会给我们下限,我的意思是,在插入排序中,如果数组已经排序,循环运行n次而不是n^2,因此,它不会充当下限吗?Big-O、Big Omega等是定义函数的不同方式。算法的最佳运行时间和最差运行时间是两个不同的函数。谢谢Aravind,这确实是一个关于Big oh的惊人答案,我知道Big oh背后的概念,但我确实有一个问题困扰着我。为了找到渐近紧上界,我们考虑最坏情况的输入和渐近紧下界的最佳情况下输入??谢谢Aravind,这确实是一个了不起的答案在大哦,我知道大OH背后的概念,但我确实有1个问题困扰着我。为了找到渐近紧上界,我们考虑最坏情况输入和渐近紧下界的最佳情况下输入???