[英]Time complexity difference in Linkedlist implementation (Iterative VS Recursive)?
在獲取Linkedlist中的節點數的這兩個實現中,時間復雜度是否會發生變化?
private int getCountIterative() {
Node start = head;
int count = 0;
while (start != null)
{
count++;
start = start.next;
}
return count;
}
private int getCountRecursive(Node node) {
if (node == null)
return 0;
return 1 + getCountRecursive(node.next);
}
不,時間復雜度不會改變。
但是,遞歸解決方案的性能和總體運行時間通常會更糟,因為Java不執行尾調用優化 。
要計算操作的復雜性(如搜索或排序算法 - 或您的示例,計數), 您需要確定主導操作 。
對於搜索和排序,通常是比較。 你的主導行動是什么? 我們假設它是node.next
,查找下一個節點。
然后,兩種方法都有O(n)運算 - 因此它具有相同的復雜性。
請注意,這段時間的復雜性是一種簡化。 忽略了一些因素,比如函數調用的開銷。 因此,它具有相同的復雜性,但這並不一定能告訴您哪個版本更快。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.