2015-10-27 70 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)即恆定時間。

相關問題