编程语言
首页 > 编程语言> > java – 具有多个条件的for循环的大O.

java – 具有多个条件的for循环的大O.

作者:互联网

我不知道之前是否有人问我,因为我不确定如何制定我的搜索,但我会尝试.下面这段代码的大O是什么?

List<SomeObject> list = //... List is created here    .1

int sum = 0;                                          .2

for(int i = 0; i < list.size() && i < 75000; i++){    .3
    sum++;                                            .4
}

我看到它的方式是第1,2和4行是O(1).然后第3行是O(N),因为它每次调用时都不会花费相同的时间.列表的大小将影响迭代量.这意味着整个代码块最终为O(N).或者这完全是胡说八道?

解决方法:

列表创建不一定是O(1),可以是O(N).

第2行显然是O(1).

我认为循环也是O(1),因为它限制为75000个条目,所以有一个上限.如果没有i< 75000限制,它将是O(N),正如你所说的那样. 所以第2-4行我会说是O(1),第1行真的取决于你省略的列表创建过程.

标签:java,big-o
来源: https://codeday.me/bug/20190828/1748743.html