2011-07-04 13 views
37

Tek bir arama işlemi VEYA contains tek için en kötü durumda O(n) olabilir? Yani hashSetn elemanları için O(n^2) olacak?HashSet arama karmaşıklığı?

+3

Tam olarak "n elementler" ile ne demek istiyorsun? Her eleman için bir arama yapmak mı? En kötü durum O (n) olmasına rağmen, genellikle O (1) olduğunu unutmayın. –

cevap

59

Evet O alır, ama gerçekten kötü durum var: HashSet tüm unsurları aynı hash kodu (veya bir hash kodu giden eğer aynı kova). Doğru yazılmış bir hashCode ve normal olarak dağıtılmış bir anahtar örnekle, bir arama O (1) olur.

-18

lookp (c)

c = sabit değer

6

Evet, ancak HashSets'e sahip olmamızın tüm nedeni, bu en kötü durumu çok, çok düşük olasılıkla karşılaşmamız ve genellikle bir yığın veya bir (kendinden dengeleyici) TreeSet veya bir (veya kendinden dengeleyici) TreeSet için garantili satırdan daha hızlıdır. Sıralanmamış bir liste için n^2 garantili.