我对如何计算原始操作的总数感到困惑。 我是靠自己做的,但这不正确。
for (i: 1 to n) --------- n
for (j: 1 to i) -------- n ( i - 1 )
for (k: j to i) ---------------- n ( n - 1 ) * ( i - 1 )
s= s + 1 ------------- n ( n - 1 ) * ( i )
此代码的基本操作总数 n + n(i - 1)+ n(n-1)*(i-1)* n(n-1)*(i)
答案 0 :(得分:0)
你应该从里到外计算: 单个执行最里面的for循环执行(i-j + 1)基元加法运算。但是这在外部循环中进行了i次,导致计数为(i-1 + 1)+(i-2 + 1)+ .. +(i-i + 1)= i *(i + 1) / 2原始操作到目前为止。现在是最外面的for循环,重复所有n次,导致总计数为(1/2)*(1 * 1 + 2 * 2 + .. + n * n)+(1/2)( 1 + 2 + ... + N)=(1/2)(N *(N + 1)的(2N + 1)/ 6 + N (N + 1)/ 2 )=(1/12)*(2 * n ^ 3 + 6 * n ^ 2 + 4 * n)= O(n ^ 3)基元运算。最终计数应该只是n的函数,而不是其他变量。