activesheet
我正忙着处理时间复杂问题。我不明白void fun(int n, int arr[]) {
int i = 0, j = 0;
for(; i < n; ++i)
{
while(j < n && arr[i] < arr[j])
{
j++;
}
}
}
循环的执行情况。
答案 0 :(得分:0)
外部循环我很简单:它将被执行n
次。
内部的那个有点棘手,因为j
的值上限为n
,但它永远不会重置为零。这就是为什么嵌套循环的主体在整个程序期间最多会执行n
次的原因。这些n
次可能分布在外部循环的多次迭代中,但不会超过n
次。
因此,该代码的时间复杂度为O(n + n)= O(n)。
O(n + n)中的第一个n
用于外部循环,第二个n
用于内部循环。