あなたがサイズNの単一のリンクされたリストを持っていて、最後からすべての要素に対して操作を実行したいとします。1つのリンクされたリスト上での操作のBig-O
私は、次の擬似コードを作ってみた:
while N > 0
Current = LinkedList
for 0 to N
Current = Current.tail
end
Operation(Current.head)
N := N-1
end
は今、私はこのアルゴリズムがあるビッグ-Oを判断するんです。
N + (N-1) + (N-2) + ... + (N-(N-1)) + 1
しかし、私は実際にビッグ-Oであることはよく分からない:(1)、私はそれがこのようなものだと思う操作は()Oとすると
。私はそれがO(N^2)よりもはるかに小さいと思うが、あなたはそのO(N)を言うことはできないと思う...
1 + 2 + 3 + ... + N = N *(N + 1 )/ 2 O(n^2) – CodesInChaos
私はあなたの構造を理解していませんが、現状(ノードのように見える)というLinkedListを持っています。あなたが前/次のことを意味したら、それは二重にリンクされています。彼らが本当に頭か尾であれば、上のコードは全く意味を持たない。 – bestsss
@bestsss:まあ、あなたはLinkedListがオブジェクトであると言うことができ、While-Loopに入るたびにCurrentで参照します。現在の(「LinkedList」である)Currentの「head」を呼び出して、実際のElementを返し、「tail」は、尾を含む別のLinkedListオブジェクトを返します。 – fresskoma