假設你有一個大小爲N的單鏈表,並且你想對每個元素執行一個操作,從最後開始。在單個鏈表上操作的大O
我已經想出以下僞代碼:
while N > 0
Current = LinkedList
for 0 to N
Current = Current.tail
end
Operation(Current.head)
N := N-1
end
現在我必須確定哪些大O這種算法。
假設操作()是O(1),我認爲這是這樣的:
N + (N-1) + (N-2) + ... + (N-(N-1)) + 1
但我不知道什麼大澳,實際上是。我認爲它肯定小於O(N^2),但我不認爲你可以說它的O(N)要麼...
1 + 2 + 3 + ... + N = N *(N + 1 )/ 2這是O(n^2) – CodesInChaos 2011-01-23 19:42:22
我不太瞭解你的結構,你有LinkedList稱爲Current(它看起來像一個Node),它有尾部和頭部?如果你打算成爲prev/next,那麼它是雙重鏈接的;如果他們確實是頭/尾,上面的代碼根本就沒有意義。 – bestsss 2011-01-23 21:59:50
@bestsss:你可以說LinkedList是一個對象,每次我進入While循環時,我都會在Current中引用它。在Current(它是LinkedList)上調用「head」,返回實際的Element,而「tail」返回另一個LinkedList Object,包含,以及尾部... – fresskoma 2011-01-23 22:04:37