TreeSetの時間複雑度についてprevious questionを読んだところ、答えはO(n)時間かかるということでした。しかし、なぜO(n * nlogn)の代わりにそれが繰り返すのがO(n)なのか分かりません。なぜO(n * logn)ではなくTreeSet Iteration O(n)ですか?
それぞれ次の呼び出しは、私はこのようなTreeSetのを反復処理のであればO(logn) time
を取ります
while (iterator.hasNext()){ //Runs N times
System.out.println(iterator.next() + " "); //each next is O(logn)
}
それはO(N * LOGN)であるために、私は期待していないO(n)のため、 whileループにはN回の反復があり、iterator.next()呼び出しにはそれぞれO(logn)時間がかかります。
なぜiterator.next()はO(log n)なのですか?それは次のノードに行く必要があります、これはO(1)ですね。 –
@JoseLuisはソースコードを見て正確ではありません。 –
@ louis-wassermanあなたは正しいです、非常に残念です。私はiterator()がソートされたノードを持つリストを返すことができたと思って、次のノードに行くのは簡単です。 –