2009-08-13 15 views
21

Czy każdy może podać mi referencje strony internetowej zawierającej podsumowanie głównych struktur danych Java i ich odpowiednią złożoność w czasie (w przypadku niektórych operacji, takich jak dodawanie, wyszukiwanie, usuwanie), np. Hashtable s to O (1) do znalezienia, natomiast LinkedList s to O (n). Niektóre szczegóły, takie jak użycie pamięci, również byłyby miłe.Java Data Structures Reference

Byłoby to bardzo pomocne przy myśleniu w strukturach danych o algorytmach.

+1

Inne niż Javadocs? –

+1

Tak, doktorzy java mają je wszystkie rozdzielone, a złożoność nie jest łatwa do znalezienia. Nie chcę szczegółów każdego z nich, tylko podsumowanie z komplikacjami czasowymi –

Odpowiedz

23

Czy istnieje powód, aby sądzić, że implementacja Javy jest inny (w sensie złożoności) niż rodzajowe, implementacji języka agnostykiem? Innymi słowy, dlaczego nie tylko odnoszą się do ogólnego odniesienia na złożoność różnych struktur danych:

NIST Dictionary of Algorithms and Data Structures

Ale jeśli nalegać na Java specyficzne:

Java standard data structures Big O notation

Java Collections cheatsheet V2 (dead link, ale this is the first version of the cheatsheet)

+4

dzięki za http://simplenotions.wordpress.com/2009/05/13/java-standard-data-structures-big -o-notation/ –

+0

Dwa z tych linków są martwe. Edytowałbym to, ale musiałbym zmienić znaczenie twojego postu. – Daniel

+0

Zaktualizowałem teraz link – bluish

0

Nie sądzę, aby istniała jakakolwiek strona internetowa opisująca to (brzmi to jak dobry pomysł na projekt). Myślę, że część problemu polega na tym, że bardzo ważne jest zrozumienie, w jaki sposób działa każdy z algorytmów. W przeważającej części brzmi to tak, jakbyś rozumiał Big-O, więc użyłbym tego jako swoich najlepszych domysłów. Wykonaj test porównawczy/profilowanie, aby zobaczyć, co działa szybciej/wolniej.

I, tak, Java docs powinien mieć większość tych informacji w java.util.

0

Złożoność czasu i przestrzeni dla głównych klas kolekcji powinna odpowiadać strukturom danych znanym czasom xity. Nie sądzę, że jest w tym coś specyficznego dla Javy, np. (jak mówisz) wyszukiwanie hash powinno być O (1). Możesz wyglądać here lub here.