Java 包含if语句的While循环的方法的大O表示法
对于这样一个方法的大O符号是什么,我有点困惑Java 包含if语句的While循环的方法的大O表示法,java,notation,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); } /
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
public void打印输出(SingleLinkedList MyLink){
迭代器itr=myLinked.Iterator();
while(itr.hasNext()){
双d=itr.next();//取消装箱
如果(d>5.0)
System.out.println(d);
}//而
}//方法打印输出
如果没有If语句,我知道它是'n',但是由于println不会在每次迭代时都执行,我该如何给出符号?答案仍然是
O(n)
如果循环在列表中运行,它是
O(n)
答案仍然是O(n)
如果循环在列表中运行,则它是
O(n)
您仍在遍历整个列表并查看每个值以进行比较,因此程序仍然是O(n)。您仍在遍历整个列表并查看每个值以进行比较,因此程序仍然是O(n)。请帮自己一个忙,对于每一行,键入该行执行的时间。首先移除while
循环,然后移除while
循环。你会发现一种模式,你会更好地理解它
简单地说,if基本上是一个常数复杂性,即O(1),它不会给外循环增加任何东西。您的wile将为您提供
O(n)
,其余语句将分别为您提供O(1)
、O(1)
和O(1)
。最后它将是O(n)+O(1)+O(1)+O(1)
。。。这将导致O(n)
总体复杂性 帮自己一个忙,对于每一行,输入该行执行的时间。首先移除while
循环,然后移除while
循环。你会发现一种模式,你会更好地理解它
简单地说,if基本上是一个常数复杂性,即O(1),它不会给外循环增加任何东西。您的wile将为您提供
O(n)
,其余语句将分别为您提供O(1)
、O(1)
和O(1)
。最后它将是O(n)+O(1)+O(1)+O(1)
。。。这将导致O(n)
总体复杂性 循环迭代n次,并在每一步检查if条件。如果条件为true,则执行if语句,该语句花费恒定的时间。
由于恒定时间对总体复杂度没有影响,因此仍然是O(n)。循环迭代n次,并在每一步检查if条件。如果条件为true,则执行if语句,该语句占用恒定时间。 由于不存在恒定时间对总体复杂度的影响,它仍然是O(n)