插入排序O(n ^ 2)的最坏情况是什么?

时间:2011-05-19 05:29:04

标签: language-agnostic sorting

插入排序O(n^2)的最坏情况是什么?

令我感到震惊的是,如果要排序的数组已经按相反的顺序排序,那么第一个元素将比第二个1倍,第三个2倍,依此类推,因此总时间应该等于{{1但是这不等于SUM {i=1->i=(n-1)} [n](例如,如果n^2则该总和为n=4

这个website表示它,因为每次插入都需要O(n)和那些n的那些,因此O(n ^ 2)。但是为什么每次插入都需要O(n),第一次插入不需要n-1插入可以取O(n)但第二次插入也不需要等等。只有插入无穷大的插入才能插入O(n)。 (这是因为有无数个元素,带有insirtion = O(n),所以插入需要的oens

2 个答案:

答案 0 :(得分:5)

你的例子是正确的。

O(n²)表示比例与n²,因为 n 接近无穷大,必须等于所有n的n²。

更准确地说,为了表明f(n)和g(n)在n增长到无穷大时是成比例的,你需要显示

\lim_{n\to \infty}\frac{f(n)}{g(n)} = c http://www.texify.com/img/%5CLarge%5C%21%5Clim_%7Bn%5Cto%20%5Cinfty%7D%5Cfrac%7Bf%28n%29%7D%7Bg%28n%29%7D%20%3D%20c.gif

对于某些有限非零常数 c 。在这种情况下,您会得到类似

的内容

\lim_{n\to \infty}\frac{n^2}{\left(\frac{n^2+n}{2}\right)} = 2 http://www.texify.com/img/%5CLarge%5C%21%5Clim_%7Bn%5Cto%20%5Cinfty%7D%5Cfrac%7Bn%5E2%7D%7B%5Cleft%28%5Cfrac%7Bn%5E2%2Bn%7D%7B2%7D%5Cright%29%7D%20%3D%202.gif

答案 1 :(得分:0)

O(n ^ 2)并不意味着操作将花费n ^ 2步......只是所涉及的步数是(大约)n ^ 2 乘以某个常数值。 / p>

在这种情况下,您的步骤数应该会提醒您Gauss triangle numbers。因此,n-1的值为n*(n-1)/2,而对于大数n-1非常接近n,您可以将此值近似(n^2)/2(和因此,乘法常数是1/2)。