2015-10-27 37 views
1

我正在学习考试,并用Big Oh符号略微理解时间复杂度。我以此为例说明他们会问什么,并好奇你的想法是什么。我不确定这些是线性的O(n)还是什么。如果你能帮助我,那么这些复杂性问题中的一些会让我困惑。先谢谢你。addFirst(e)和removeFirst()方法的时间复杂度是多少?

public E removeFirst() { 
     if (size == 0) { 
     return null; 
     } 
     else { 
     Node<E> temp = head; 
     head = head.next; 
     size--; 
     if (head == null) { 
      tail = null; 
     } 
     return temp.element; 
} 
} 


    public void addFirst(E e) { 
     Node<E> newNode = new Node<E>(e); 
     newNode.next = head; 
     head = newNode; 
     size++; 

     if (tail == null) 
     tail = head; 
} 
+3

如果您有循环或递归,可能会出现复杂度O(n)。如您所见,您的方法具有可预测的操作量,并且此量不取决于列表中的长度。这就是为什么复杂性是O(1) – Natalia

回答

1

大O符号大致装置的代码需要在最坏的情况下将要执行的最大次数,因为在这两种你的函数返回的结果,只有一个在任何情况下迭代因而最坏的情况下的复杂性你的两个函数都是O(1)即恒定时间。

相关问题