While循环包含if语句

时间:2016-05-19 02:28:51

标签: java notation

对于像这样的方法的大O符号是什么,我有点困惑

public void printOut (SinglyLinkedList<Double> myLinked){
Iterator<Double> itr = myLinked.iterator();
while (itr.hasNext()){
    double d = itr.next(); // unboxing
    if (d > 5.0)
    System.out.println (d);
} // while
} // method printOut

如果没有if声明我知道它是&#39; n&#39; n&#39;但由于println每次迭代都不会执行,我该如何设计符号呢?

4 个答案:

答案 0 :(得分:2)

答案仍为O(n)

如果循环遍历列表,则为O(n)

答案 1 :(得分:2)

您仍在遍历整个列表并查看每个值以进行比较,因此该程序仍为O(n)。

答案 2 :(得分:0)

为自己帮忙,为每一行输入该行执行的时间。首先删除while循环然后使用while循环执行此操作。你会发现一个模式,你将能够更好地理解它。

简单来说,if基本上是一个常数复杂度,即O(1),它不会向外循环添加任何东西。你的诡计会给你O(n),其余的时间会分别给你O(1)O(1)O(1)。最后它将是O(n) + O(1) + O(1) + O(1) ...这将导致O(n)整体复杂性。

答案 3 :(得分:0)

循环迭代n次,并在每一步检查if条件。如果条件为真,则执行if语句,该语句需要恒定时间。 由于恒定时间对整体复杂性没有影响,因此它仍然是O(n)。

相关问题