当前位置:  开发笔记 > 编程语言 > 正文

什么是嵌套循环的Big-O,其中内循环中的迭代次数由外循环的当前迭代确定?

如何解决《什么是嵌套循环的Big-O,其中内循环中的迭代次数由外循环的当前迭代确定?》经验,为你挑选了3个好方法。

以下嵌套循环的Big-O时间复杂度是多少:

for(int i = 0; i < N; i++) 
{
    for(int j = i + 1; j < N; j++)
    {
        System.out.println("i = " + i + " j = " + j);
    }

}

它还是O(N ^ 2)吗?



1> Alex Gaynor..:

是的,它仍然是O(n ^ 2),它具有较小的常数因子,但这不会影响O表示法.



2> Charlie Mart..:

是.回想一下大-O的定义:O(F(N))由定义说,运行时间T(N)KF(n)的一些恒定ķ.在这种情况下,步数将是(n-1)+(n-2)+ ... + 0,其重新排列为0到n-1的和; 这是

T(n)=(n-1)((n-1)+1)/ 2.

重新排列,您可以看到T(n)总是≤1/ 2(n²); 根据定义,因此T(n)= O(n 2).



3> Jon Skeet..:

如果忽略System.out.println,则为N平方.如果你假设它所花费的时间在它的输出中是线性的(当然它可能不是),我怀疑你最终得到O((N ^ 2)*log N).

我提到这不是挑剔,但只是要指出你在解决复杂性时不仅需要考虑明显的循环 - 你需要考虑你所称的复杂性.

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有