循环索引未被重置的嵌套循环的时间复杂度是多少?

时间:2015-06-26 13:30:40

标签: algorithm time-complexity

activesheet

我正忙着处理时间复杂问题。我不明白void fun(int n, int arr[]) { int i = 0, j = 0; for(; i < n; ++i) { while(j < n && arr[i] < arr[j]) { j++; } } } 循环的执行情况。

1 个答案:

答案 0 :(得分:0)

外部循环我很简单:它将被执行n次。

内部的那个有点棘手,因为j的值上限为n,但它永远不会重置为零。这就是为什么嵌套循环的主体在整个程序期间最多会执行n次的原因。这些n次可能分布在外部循环的多次迭代中,但不会超过n次。

因此,该代码的时间复杂度为O(n + n)= O(n)。

O(n + n)中的第一个n用于外部循环,第二个n用于内部循环。