为什么在最坏的情况下,插入排序的运行时间复杂度是n(n-1)/ 2~n ^ 2?用2突出显示除法?
答案 0 :(得分:3)
运行时间不是n(n-1)/2
,每步需要1个以上
机器OP(在我知道的所有机器中)。这就是我们通常的原因
在算法中使用big O notation和“忽略”常量
分析 - 我们希望使我们的分析具有通用性和平台性
独立的。
插入排序分析为n(n-1)/2 = O(n^2)
,因为它是。{
sum of arithmetic progression。第一次迭代需要1
步骤,后两步,......第n步需要n步,所以我们从算术级数的总和得到1 + 2 + ... + n = n(n-1)/2
。
答案 1 :(得分:0)
算法简介在第2.1章中提供了插入排序的详细信息,其中讨论了插入排序的整个过程。
最坏的情况是由相反顺序切换子阵列引起的。
答案 2 :(得分:0)
我知道这已经永远关闭但是我想为其他任何试图了解插入排序最差情况背后的数学的人添加这个。我找到了一个很棒的video,用这种方式解释了n(n-1)/ 2公式:
评估总和:
首先将其放入系列符号(称之为s):
s = 1 + 2 + 3 + ... n-3+n-2+n-1
然后反过来显示:
s = n-1+n-2+n-3+ ... 3 + 2 + 1
通过添加每对来将s添加到一起,您得到:n+n+n+....n+n+n
或换句话说2s = n(n-1)
,因为你有n次,n次1次,并且你花了两个这样的套来获得它。
那么你只需要解决2s = n(n-1)
带来的不等式s = n(n-1) / 2
。