插入排序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
答案 0 :(得分:5)
你的例子是正确的。
O(n²)表示比例与n²,因为 n 接近无穷大,不必须等于所有n的n²。
更准确地说,为了表明f(n)和g(n)在n增长到无穷大时是成比例的,你需要显示
对于某些有限非零常数 c 。在这种情况下,您会得到类似
的内容答案 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)。