想确保我拥有此权利。
int n = 20;
while (n > 0)
int index = 0
while (index < n)
index++
n--
这是最大的问题:
n + (n-1) + (n-2) + (n-3) + … ++ (n-n)
从技术上讲,这仍然是O(N)吗?
答案 0 :(得分:2)
归纳证明:
1 + 2 + 3 + ... + n = n(n + 1) / 2
1 + 2 + 3 + ... + n = O(n^2)
基本情况:
n = 1
1 = (1 + 1) / 2
1 = 2 / 2
1 = 1
假设k
的真实值最高为k < n
:
1 + 2 + 3 + ... + k = k(k + 1) / 2
证明n = k + 1
为真
1 + 2 + 3 + ... + k + (k + 1) = (k + 1)(k + 1 + 1) / 2
k(k + 1)/2 + (k + 1) = (k + 1)(k + 1 + 1) / 2
k(k + 1)/2 + 2(k + 1) / 2 = (k + 1)(k + 1 + 1) / 2
(k^2 + k)/2 + (2k + 2) / 2 = (k + 1)(k + 1 + 1) / 2
(k^2 + k + 2k + 2) / 2 = (k + 1)(k + 1 + 1) / 2
(k^2 + 3k + 2) / 2 = (k + 1)(k + 2) / 2
(k^2 + 3k + 2) / 2 = (k^2 + 2k + k + 2) / 2
(k^2 + 3k + 2) / 2 = (k^2 + 3k + 2) / 2
因此:
1 + 2 + 3 + ... + n = n(n + 1) / 2
1 + 2 + 3 + ... + n = (n^2 + n) / 2
1 + 2 + 3 + ... + n = O(n^2)
答案 1 :(得分:1)
如果计算出来,它是第N个三角形数字-因此:
O(N(N + 1) / 2)