Szczegóły ebooka

Zrozum struktury danych. Algorytmy i praca na danych w Javie

Zrozum struktury danych. Algorytmy i praca na danych w Javie

Allen B. Downey

Ebook

Niezależnie od tego, jakim językiem programowania się posługujesz, nie staniesz się dobrym programistą ani nawet przeciętnym informatykiem, jeśli nie przyswoisz sobie najważniejszych idei inżynierii oprogramowania: algorytmów i struktur danych. Nie są to zagadnienia proste i z pewnością niejednego studenta informatyki kosztowały wiele zarwanych nocy. Niestety, istniejące na rynku książki dotyczące tych zagadnień nie ułatwiają nauki. Najczęściej są przeładowane matematycznymi wywodami, zbyt teoretyczne, zbyt opasłe i... zbyt oderwane od konkretnych zastosowań!

Jeśli postanowiłeś zyskać praktyczną wiedzę o algorytmach i strukturach danych, a przy tym nieźle posługujesz się Javą, to trzymasz w rękach właściwą poublikację. Podstawy teoretyczne zostały w niej ograniczone do niezbędnych, potrzebnych w praktyce zagadnień. Sporo miejsca poświęcono analizie implementacji algorytmów i mierzeniu ich wydajności. Wyczerpująco wyjaśniono tak ważne aspekty praktyki inżynierii oprogramowania, jak kontrola wersji i testy jednostkowe. Mimo niewielkiej objętości książki znalazły się tu również ambitniejsze zagadnienia, np. trwałe struktury danych tworzone przez bazy danych Redis. W każdym rozdziale zamieszczono praktyczne ćwiczenia wraz z odpowiednim kodem testującym.

W tej książce między innymi:

  • Wprowadzenie do interfejsów Javy
  • Analiza algorytmów
  • Binarne drzewo przeszukiwania
  • Wyszukiwanie logiczne
  • Sortowanie

Myśl jak informatyk i zrozum algorytmy!

Wstęp (7)

1. Interfejsy (13)

  • Dlaczego są dwa rodzaje list? (14)
  • Interfejsy w języku Java (15)
  • Interfejs List (16)
  • Ćwiczenie 1. (17)

2. Analiza algorytmów (21)

  • Sortowanie przez wybieranie (23)
  • Notacja dużego O (25)
  • Ćwiczenie 2. (26)

3. Klasa ArrayList (31)

  • Klasyfikacja metod klasy MyArrayList (31)
  • Klasyfikacja metody add (33)
  • Wielkość problemu obliczeniowego (36)
  • Powiązane struktury danych (37)
  • Ćwiczenie 3. (39)
  • Uwaga na temat odśmiecania pamięci (42)

4. Klasa LinkedList (45)

  • Klasyfikacja metod klasy MyLinkedList (45)
  • Porównanie klas MyArrayList i MyLinkedList (48)
  • Profilowanie (49)
  • Interpretacja wyników (52)
  • Ćwiczenie 4. (53)

5. Lista dwukierunkowa (55)

  • Wyniki profilowania wydajnościowego (55)
  • Profilowanie metod klasy LinkedList (57)
  • Dodawanie na końcu listy będącej obiektem klasy LinkedList (59)
  • Lista dwukierunkowa (61)
  • Wybór struktury (62)

6. Przechodzenie przez drzewo (65)

  • Mechanizmy wyszukiwania (65)
  • Parsowanie kodu HTML (67)
  • Używanie biblioteki jsoup (69)
  • Iterowanie po drzewie DOM (71)
  • Przeszukiwanie w głąb (72)
  • Stosy w języku Java (73)
  • Iteracyjna implementacja DFS (75)

7. Dochodzenie do filozofii (77)

  • Pierwsze kroki (77)
  • Interfejsy Iterable i Iterator (78)
  • Klasa WikiFetcher (80)
  • Ćwiczenie 5. (82)

8. Indekser (85)

  • Wybór struktury danych (85)
  • Klasa TermCounter (87)
  • Ćwiczenie 6. (90)

9. Interfejs Map (95)

  • Implementacja klasy MyLinearMap (95)
  • Ćwiczenie 7. (96)
  • Analiza klasy MyLinearMap (98)

10. Mieszanie (101)

  • Mieszanie (101)
  • Jak działa mieszanie? (104)
  • Mieszanie i zmiany (106)
  • Ćwiczenie 8. (107)

11. Klasa HashMap (109)

  • Ćwiczenie 9. (109)
  • Analiza klasy MyHashMap (111)
  • Kompromisy (113)
  • Profilowanie klasy MyHashMap (114)
  • Poprawianie klasy MyHashMap (114)
  • Diagramy klas UML (117)

12. Klasa TreeMap (119)

  • Co jest nie tak z mieszaniem? (119)
  • Binarne drzewo poszukiwań (120)
  • Ćwiczenie 10. (122)
  • Implementacja klasy TreeMap (124)

13. Binarne drzewo poszukiwań (129)

  • Prosta klasa MyTreeMap (129)
  • Wyszukiwanie wartości (130)
  • Implementacja metody put (132)
  • Przechodzenie poprzeczne (133)
  • Metody logarytmiczne (135)
  • Drzewa samorównoważące się (137)
  • Jeszcze jedno ćwiczenie (138)

14. Trwałość (139)

  • Redis (140)
  • Serwery i klienty Redisa (141)
  • Tworzenie indeksu przy użyciu Redisa (142)
  • Typy danych Redisa (144)
  • Ćwiczenie 11. (146)
  • Więcej sugestii, z których możesz skorzystać (148)
  • Kilka wskazówek dotyczących projektu (149)

15. Pełzanie po Wikipedii (151)

  • Indekser wykorzystujący Redisa (151)
  • Analiza operacji przeglądania (154)
  • Analiza operacji indeksowania (155)
  • Przechodzenie grafu (156)
  • Ćwiczenie 12. (157)

16. Wyszukiwanie logiczne (161)

  • Implementacja pełzacza (161)
  • Pozyskiwanie informacji (163)
  • Wyszukiwanie logiczne (164)
  • Ćwiczenie 13. (165)
  • Interfejsy Comparable i Comparator (168)
  • Rozszerzenia (170)

17. Sortowanie (173)

  • Sortowanie przez wstawianie (174)
  • Ćwiczenie 14. (176)
  • Analiza sortowania przez scalanie (178)
  • Sortowanie pozycyjne (180)
  • Sortowanie przez kopcowanie (182)
  • Kopiec ograniczony (185)
  • Złożoność pamięciowa (185)

Skorowidz (189)

  • Tytuł: Zrozum struktury danych. Algorytmy i praca na danych w Javie
  • Autor: Allen B. Downey
  • Tytuł oryginału: Think Data Structures: Algorithms and Information Retrieval in Java
  • Tłumaczenie: Łukasz Suma
  • ISBN: 978-83-283-4093-0, 9788328340930
  • Data wydania: 2018-04-13
  • Format: Ebook
  • Identyfikator pozycji: zrojav
  • Wydawca: Helion