A []的大小为n,B [] []的大小为nxn
for i_{1,n} {
for j_{1,n} {
if(i<=j) -> B[i,j] = sum of the elements A[i], A[i+1],...,A[j]
else -> B[i,j] = 0
据我所知,前两个for循环是两次迭代。 我的问题是如果(i <= j)部分如何做。在max,它将总和n次(当i = 1且j = n时)。在最小时,它只会做一件事,因此1。
我真的输了。
答案 0 :(得分:0)
我对这种理论上的运行时分析很糟糕,但这可能有助于以另一种方式看待事物:
for i_{1,n}
{
if (j>i) -> B[i,j] = sum of A[i],A[i+1],...,A[j]
else -> B[i,j] = 0
}
其中(我认为)恰好与以下相同:
for i_{1,n}
{
for j_{1,n}
{
B[i,j] = 0
if (j > i)
{
for k_{i,j}
B[i,j] += A[k];
}
}
}
这将使其成为立方复杂度算法。第k
次循环执行0次,然后执行1次,然后执行2次,然后执行3次,依此类推,执行n
次。它的上限仍为n
。然后我们又有两个迭代n
的循环,因此我们的上限复杂度为n*n*n
或O(n^3)
。