TreeSet için zaman karmaşıklığı hakkında bir previous question okudum ve cevap O (n) zamanı almasıydı. Ancak, neden O (n) 'nin O (n * nlogn) yerine yinelemesini anlamıyorum. çünkü (n) ONeden TreeSet Iteration O (n) O (n * logn) yerine?
while (iterator.hasNext()){ //Runs N times
System.out.println(iterator.next() + " "); //each next is O(logn)
}
o (* logn n) Ç olacağın için beklenir değil:
Her bir sonraki çağrı Böyle bir TreeSet yinelemenize eğer O(logn) time
Yani sürer while döngüsünde N yineleme vardır ve her bir iterator.next() çağrısı O (logn) süresini alır.
Neden 'iterator.next()' O (log n) 'dir. Sadece bir sonraki düğüme gitmesi gerekiyor, bu O (1) değil mi? Kaynak koduna bakarak –
@JoseLuis doğru değil. –
@ louis-wasserman Haklısınız, çok üzgünüm. Iterator() 'ın sıralanmış düğümlerle bir liste döndürdüğünü ve sonra bir sonraki düğüme gitmenin kolay olduğunu düşünmüştüm. –