Algorithm 冒泡排序算法的时间复杂度如何导致计算方式为O(n^2)?
我理解为什么冒泡排序是O(n^2) 然而,在许多解释中,我看到了如下情况:Algorithm 冒泡排序算法的时间复杂度如何导致计算方式为O(n^2)?,algorithm,sorting,big-o,bubble-sort,Algorithm,Sorting,Big O,Bubble Sort,我理解为什么冒泡排序是O(n^2) 然而,在许多解释中,我看到了如下情况: (n-1) + (n-2) + (n-3) + ..... + 3 + 2 + 1 Sum = n(n-1)/2 你如何计算这部分的总和 (n-1) + (n-2) + (n-3) + ..... + 3 + 2 + 1 有人能帮忙吗?这里有个窍门: If n is even: n + (n-1) + (n-2) + … + 3 + 2 + 1 = [n + 1] + [(n-1) + 2] + [(n-2) +
(n-1) + (n-2) + (n-3) + ..... + 3 + 2 + 1
Sum = n(n-1)/2
你如何计算这部分的总和
(n-1) + (n-2) + (n-3) + ..... + 3 + 2 + 1
有人能帮忙吗?这里有个窍门:
If n is even:
n + (n-1) + (n-2) + … + 3 + 2 + 1
= [n + 1] + [(n-1) + 2] + [(n-2) + 3] + … + [(n - (n/2 - 1)) + n/2]
= (n + 1) + (n + 1) + (n + 1) + … + (n + 1)
= n(n+1)/2
If n is odd:
n + (n-1) + (n-2) + … + 3 + 2 + 1
= [n + 1] + [(n-1) + 2] + [(n-2) + 3] + … + [(n - (n-1)/2 + 1) + (n-1)/2] + (n-1)/2 + 1
= (n+1) + (n+1) + (n+1) + … + (n+1) + (n-1)/2 + 1
= (n+1)(n-1)/2 + (n-1)/2 + 1
= (n^2 - 1 + n - 1 + 2)/2
= (n^2 + n)/2
= n(n+1)/2
对于您的情况,由于您的计数是n-1而不是n,因此在本公式中,将n替换为(n-1),并简化:
x(x+1)/2, x = (n-1)
=> (n-1)((n-1)+1)/2
= (n-1)(n)/2
= n(n-1)/2
在不推导方程式的情况下,最简单的“证明”是将复杂性想象为面积:
如果我们有顺序:
n+(n-1)+(n-2)...
我们可以从中创建一个形状。。。让我们考虑<代码> n=5 < /代码>:
n 5 *****
n-1 4 ****
n-2 3 ***
n-3 2 **
n-4 1 *
现在当你看起点时,它们形成一个直角三角形,有两条等长的边。。。这是nxn
平方的一半,因此面积为:
area = ~ n.n / 2 = (n^2)/2
在复杂性中,常数没有意义,因此复杂性为:
O(n^2)
这是n个连续整数之和的证明:这是一个数学问题。