小编lom*_*133的帖子

我不明白如何计算此算法的时间复杂度

int j=0;
for (int i=0; i<N; i++) 
{
    while ( (j<N-1) && (A[i]-A[j] > D) )
        j++;
    if (A[i]-A[j] == D) 
        return 1; 
}
Run Code Online (Sandbox Code Playgroud)

据说这段代码的时间复杂度为O(n),但我并没有真正得到它.内循环执行N次,外部也应该N次?是因为j = 0; 在循环之外使它只运行N次?

但即使它只在内循环中运行N次,if语句检查也应该进行N次,这应该将总时间复杂度带到O(n ^ 2)?

c algorithm big-o loops time-complexity

16
推荐指数
1
解决办法
421
查看次数

标签 统计

algorithm ×1

big-o ×1

c ×1

loops ×1

time-complexity ×1