对于像这样的方法的大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每次迭代都不会执行,我该如何设计符号呢?
答案 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)。