以下代码的时间复杂度是多少?在大O表示法

时间:2017-10-12 22:49:14

标签: java big-o

    for(int i = 0 ; i < n ; i++) { 
        a[i] = scan.nextInt();
    }
    for(int i = 0 ; i < n ; i++) {
        for(j = n ; j >= 0 ; j--)
            a[j] = a[j] + a[i];
    }

我似乎无法正确找到代码的时间复杂性或转换为大O. 我知道第一个循环是1 +(n + 1)+ 1,我认为第二个/第三个循环是N *(1 - (N-1)* 1)

1 个答案:

答案 0 :(得分:3)

O(n)表示法是描述代码的多项式中最大项的次数,并描述了随着输入大小的增加,运行时间的增长方式。

因此,系数和低阶项等小细节并不重要。

由于有两个嵌套的for循环,它们都通过输入迭代一次(大小为n),因此代码为O(n ^ 2)。单个for循环是O(n)并且不是最高阶项,因此它被删除。