这个算法的时间复杂度是多少?

时间:2013-02-23 13:29:42

标签: algorithm complexity-theory big-o time-complexity

假设我们有一个数组w,它包含n个整数。通过以下定义和以下伪代码,请告诉我算法w.r.t的时间复杂度是多少。 n

idx[i] = max(j) : 1 <= j < i and w[j] < w[i]

alg:
Data: w : array of integers - idx: a pointer to maximum index with the less value.
Date: w is 1based

idx[1] = -1
for i=: 2 to n do
  j=i-1
  while w[j] > w[i] and j <> -1
  {
    j = idx[j]
  }
  idx[i] =j
end

1 个答案:

答案 0 :(得分:1)

这里有2个循环 -

  1. 第一个循环for loop运行n次。因此它的O(n)。
  2. 每次从while loop开始运行第二个循环(i-1) + (i-2) + (i-3) + .... + (i-n)。它运行(n-1)次。所以O(n)。
  3. 结合O(n^2)算法。其他操作要么是恒定时间要么是O(n)时间,因此被忽略了。