求和运行时间分析

时间:2015-05-19 07:07:41

标签: performance time sum analysis

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。

我真的输了。

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*nO(n^3)