2013-01-14 14 views

Odpowiedz

7

Javadoc wydaje się sugerować, że addAll jest dziedziczona z AbstractQueue gdzie jest realizowane jako sekwencja dodaje.

To prowadzi mnie do przekonania, że ​​złożoność to O(mlogn) gdzie m jest wielkością wstawianej kolekcji.

+0

...? _O (m log n) _, nie _O (m n log n) _. –

+0

@LouisWasserman yup naprawione dzięki! –

+0

Myślę, że byłby to "O (m log (n + m))". Pomyśl o przypadku, gdy 'n = 0' –

2

Patrząc na OpenJDK, wygląda kolejka priorytetowa dziedziczy realizację AddAll z AbstractQueue który wykonuje iteracje nad zbierania i wzywa dodać na każdym elemencie.

Source

3

Od Priority Queue

... ta implementacja zapewnia O (log (n)) czas na enqueing i metod dequeing ...

Więc można tylko załóżmy n log(n).

jednak - oczywiście - to jest tylko to, co można założyć. W zależności od konkretnej implementacji, której zamierzasz użyć, możesz znaleźć kilka sztuczek, które mogą poprawić sytuację.