这些陈述的复杂性是什么?
for(int k = 1; k < n; k++)
for(int i = 0; i < n-k; i++){
//O(1) operation here
}
解释赞赏。
答案 0 :(得分:4)
首先进入外循环,执行n-1
次操作。
第二步你做n-2
次,...添加所有这些,你最终会进行(n)*(n-1)/2
次操作。
要查看该总和,请将其从1写入(n-1),然后从(n-1)写入1并逐个添加每个术语。
1 2 3 ... n-3 n-2 n-1
n-1 n-2 n-3 ... 3 2 1
---------------------------
n n n n n n
所以2 * sum = (n-1) * n
。
就复杂性而言,这是n²
。