Algorytmy, struktury danych i techniki programowania dla programist贸w Java - Helion
Autor: Piotr Wr贸blewski
ISBN: 978-83-283-5465-4
ok艂adka: mi臋kka
Data wydania: 2019-04-01
Ksi臋garnia: Helion
Cena ksi膮偶ki: 46,90 z艂 (poprzednio: 67,00 z艂)
Oszcz臋dzasz: 30% (-20,10 z艂)
ISBN: 978-83-283-5465-4
ok艂adka: mi臋kka
Data wydania: 2019-04-01
Ksi臋garnia: Helion
Cena ksi膮偶ki: 46,90 z艂 (poprzednio: 67,00 z艂)
Oszcz臋dzasz: 30% (-20,10 z艂)
Osoby kt贸re kupowa艂y "Algorytmy, struktury danych i techniki programowania dla programist贸w Java", wybiera艂y tak偶e:
- Biologika Sukcesji Pokoleniowej. Sezon 3. Konflikty na terytorium 124,17 z艂, (14,90 z艂 -88%)
- Windows Media Center. Domowe centrum rozrywki 66,67 z艂, (8,00 z艂 -88%)
- Podr臋cznik startupu. Budowa wielkiej firmy krok po kroku 93,13 z艂, (14,90 z艂 -84%)
- Ruby on Rails. 膯wiczenia 18,75 z艂, (3,00 z艂 -84%)
- Scrum. O zwinnym zarz 78,42 z艂, (14,90 z艂 -81%)
Spis tre艣ci
Algorytmy, struktury danych i techniki programowania dla programist贸w Java -- spis tre艣ci
- Przedmowa
- Dlaczego Java?
- Co odró偶nia t臋 ksi膮偶k臋 od innych podr臋czników?
- Jak nale偶y czyta膰 t臋 ksi膮偶k臋?
- Co zosta艂o opisane w tej ksi膮偶ce?
- Rozdzia艂 1. Zanim wystartujemy
- Rozdzia艂 2. Systemy obliczeniowe i podstawy kodowania
- Rozdzia艂 3. Rekurencja
- Rozdzia艂 4. Analiza z艂o偶ono艣ci algorytmów
- Rozdzia艂 5. Podstawy modelowania danych
- Rozdzia艂 6. Modelowanie abstrakcyjnych typów danych
- Rozdzia艂 7. Struktury danych o dost臋pie ograniczonym
- Rozdzia艂 8. Drzewa i zbiory
- Rozdzia艂 9. java.util, czyli struktury danych dla leniuchów
- Rozdzia艂 10. Algorytmy przeszukiwania
- Rozdzia艂 11. Algorytmy sortowania
- Rozdzia艂 12. Derekursywacja i optymalizacja algorytmów
- Rozdzia艂 13. Przeszukiwanie tekstów
- Rozdzia艂 14. Zaawansowane techniki programowania
- Rozdzia艂 15. Algorytmy grafowe
- Rozdzia艂 16. Algorytmy numeryczne
- Rozdzia艂 17. Kodowanie i kompresja danych
- Rozdzia艂 18. Czy komputery mog膮 my艣le膰?
- Rozdzia艂 19. Zadania ró偶ne
- Dodatek A
- Programy przyk艂adowe
- Konwencje typograficzne i oznaczenia
- Rozdzia艂 1. Zanim wystartujemy
- Czym powinien si臋 charakteryzowa膰 algorytm?
- Jak to wcze艣niej bywa艂o, czyli wyj膮tki z historii maszyn algorytmicznych
- 1804
- 1830 i pó藕niej
- 1890
- lata 30. XX w.
- lata 40. XX w.
- okres powojenny
- 1969
- teraz
- Jak to si臋 niedawno odby艂o, czyli o tym, kto wymy艣li艂 metodologi臋 programowania
- Proces koncepcji programów
- Poziomy abstrakcji opisu i wybór j臋zyka
- Modelowanie dzia艂ania algorytmów (maszyna Turinga)
- Poprawno艣膰 algorytmów
- Zadania
- Zadanie 1.
- Zadanie 2.
- Zadanie 3.
- Rozwi膮zania i wskazówki do zada艅
- Zadanie 1.
- Zadanie 2.
- Zadanie 3.
- Rozdzia艂 2. Systemy obliczeniowe i podstawy kodowania
- System dziesi臋tny i kilka definicji
- System dwójkowy
- Operacje arytmetyczne na liczbach dwójkowych
- Operacje logiczne na liczbach dwójkowych
- Kod BCD
- System ósemkowy
- System szesnastkowy
- Kodowanie liczb ze znakiem
- Kod znak-modu艂 (ZM)
- Kod U2 (system uzupe艂nienia dwójkowego)
- Przyk艂ad wyliczania liczby dziesi臋tnej w U2:
- Przyk艂ad wyliczania liczby przeciwnej w U2:
- Zmienne w pami臋ci komputera
- Kodowanie znaków
- Kodowanie obrazów
- Mapy bitowe na przyk艂adzie formatu BMP
- Rozdzia艂 3. Rekurencja
- Definicja rekurencji
- Ilustracja poj臋cia rekurencji
- Jak wykonuj膮 si臋 programy rekurencyjne?
- Niebezpiecze艅stwa rekurencji
- Ci膮g Fibonacciego
- Stack overflow!
- 膯wiczenie 3.1.
- 膯wiczenie 3.2.
- Pu艂apek ci膮g dalszy
- St膮d do wieczno艣ci
- Definicja poprawna, ale
- Typy programów rekurencyjnych
- My艣lenie rekurencyjne
- Przyk艂ad 1. Spirala
- Przyk艂ad 2. Kwadraty parzyste
- Uwagi praktyczne na temat technik rekurencyjnych
- Zadania
- Zadanie 1.
- Zadanie 2.
- Zadanie 3.
- Pytanie 1.
- Pytanie 2.
- Zadanie 4.
- Zadanie 5.
- Zadanie 6.
- Rozwi膮zania i wskazówki do zada艅
- Zadanie 1.
- Zadanie 2.
- Zadanie 3.
- Zadanie 4.
- Zadanie 5.
- Zadanie 6.
- Rozdzia艂 4. Analiza z艂o偶ono艣ci algorytmów
- Definicje i przyk艂ady
- Jeszcze raz funkcja silnia
- Zerowanie fragmentu tablicy
- Wpadamy w pu艂apk臋
- Ró偶ne typy z艂o偶ono艣ci obliczeniowej
- Nowe zadanie: upro艣ci膰 obliczenia!
- Analiza programów rekurencyjnych
- Terminologia i definicje
- Ilustracja metody na przyk艂adzie
- Rozk艂ad logarytmiczny
- Przeszukiwanie binarne tym razem bez matematyki wy偶szej!
- Zamiana dziedziny równania rekurencyjnego
- Funkcja Ackermanna, czyli co艣 dla smakoszy
- Z艂o偶ono艣膰 obliczeniowa to nie religia!
- Techniki optymalizacji programów
- Zadania
- Zadanie 1.
- Zadanie 2.
- Zadanie 3.
- Zadanie 4.
- Rozwi膮zania i wskazówki do zada艅
- Zadanie 2.
- Zadanie 4.
- Definicje i przyk艂ady
- Rozdzia艂 5. Podstawy modelowania danych
- Typy proste i z艂o偶one
- Operatory i zmienne
- Obiektowe typy proste, czyli klasy os艂onowe
- Ci膮gi znaków i napisy
- Tablice
- Poj臋cie referencji, czyli gdzie te wska藕niki z dawnych lat
- Programowanie obiektowe jako narz臋dzie modelowania danych i algorytmów
- Terminologia
- Modelowanie danych na przyk艂adzie liczb zespolonych
- Pola i metody statyczne klas
- Dziedziczenie w艂asno艣ci
- Struktury rekurencyjne w Javie
- Typy proste i z艂o偶one
- Rozdzia艂 6. Modelowanie abstrakcyjnych typów danych
- Abstrakcyjne typy danych
- Listy jednokierunkowe
- Realizacja struktur danych listy jednokierunkowej
- Proste do艂膮czanie elementów do listy
- Do艂膮czanie elementów do listy z sortowaniem
- Usuwanie danych z listy
- Metody 艂膮czenia list
- Sortowanie list za pomoc膮 list referencji
- Tablicowa implementacja list
- Klasyczna reprezentacja tablicowa
- Metoda tablic równoleg艂ych
- Listy innych typów
- Lista dwukierunkowa
- Lista cykliczna
- Listy z iteratorem
- Listy jednokierunkowe
- Podsumowanie
- Abstrakcyjne typy danych
- Rozdzia艂 7. Struktury danych o dost臋pie ograniczonym
- Stos
- Zasada dzia艂ania stosu
- Realizacja programowa stosu
- Kolejki FIFO
- Sterty i kolejki priorytetowe
- Zadania
- Zadanie 1.
- Rozwi膮zania i wskazówki do zada艅
- Zadanie 1.
- Stos
- Rozdzia艂 8. Drzewa i zbiory
- Drzewa i ich reprezentacje
- Binarne drzewa poszukiwa艅 (BST)
- Drzewa binarne i wyra偶enia arytmetyczne
- Uniwersalna struktura s艂ownikowa
- Drzewa egzotyczne
- Zbiory
- Zadania
- Zadanie 1.
- Zadanie 2.
- Zadanie 3.
- Zadanie 4.
- Rozwi膮zania zada艅
- Zadanie 1.
- Drzewa i ich reprezentacje
- Rozdzia艂 9. java.util, czyli struktury danych dla leniuchów
- Java i interfejsy
- Klasa Arrays, operacje na tablicach
- Klasa Vector, czyli tablice dynamiczne
- Listy
- Iteratory, czyli wygodne indeksowanie kolekcji
- Stos
- Sortowanie kolekcji
- Klasa HashSet, czyli szybko do celu
- Rozdzia艂 10. Algorytmy przeszukiwania
- Przeszukiwanie liniowe
- Przeszukiwanie binarne
- Transformacja kluczowa (hashing)
- W poszukiwaniu funkcji H
- Najbardziej znane funkcje H
- Suma modulo 2
- Suma modulo Rmax
- Mno偶enie
- Obs艂uga konfliktów dost臋pu
- Powrót do 藕róde艂
- Jeszcze raz tablice!
- Próbkowanie liniowe
- Podwójne kluczowanie
- Zastosowania transformacji kluczowej
- Klasyczne funkcje C/C++ oraz Java
- Funkcje hashuj膮ce a klasy Javy
- Podsumowanie metod transformacji kluczowej
- Rozdzia艂 11. Algorytmy sortowania
- Sortowanie przez wstawianie, algorytm klasy O(N2)
- Sortowanie b膮belkowe, algorytm klasy O(N2)
- Sortowanie szybkie (Quicksort) algorytm klasy O(N log N)
- Heapsort sortowanie przez kopcowanie
- Scalanie zbiorów posortowanych
- Sortowanie przez scalanie, algorytm klasy O(N log N)
- Sortowanie zewn臋trzne
- Uwagi praktyczne
- Rozdzia艂 12. Derekursywacja i optymalizacja algorytmów
- Jak pracuje kompilator?
- Odrobina formalizmu nie zaszkodzi!
- Przyk艂ad
- Kilka przyk艂adów derekursywacji algorytmów
- Derekursywacja z wykorzystaniem stosu
- Eliminacja zmiennych lokalnych
- Metoda funkcji przeciwnych
- Klasyczne schematy derekursywacji
- Schemat typu while
- Schemat typu if-else
- Schemat z podwójnym wywo艂aniem rekurencyjnym
- Podsumowanie
- Rozdzia艂 13. Przeszukiwanie tekstów
- Algorytm typu brute force
- Nowe algorytmy poszukiwa艅
- Algorytm KMP
- Algorytm Boyera-Moorea
- Algorytm Rabina-Karpa
- Rozdzia艂 14. Zaawansowane techniki programowania
- Programowanie typu dziel i zwyci臋偶aj
- Odszukiwanie minimum i maksimum w tablicy liczb
- 膯wiczenie 1.
- Mno偶enie macierzy o rozmiarze N×N
- Mno偶enie liczb ca艂kowitych
- Inne znane algorytmy dziel i zwyci臋偶aj
- Odszukiwanie minimum i maksimum w tablicy liczb
- Algorytmy 偶ar艂oczne, czyli przek膮si膰 co艣 nadszed艂 ju偶 czas
- Problem plecakowy, czyli nie艂atwe jest 偶ycie turysty piechura
- Wydawanie reszty, czyli A nie ma pan drobnych? w praktyce
- Programowanie dynamiczne
- Ci膮g Fibonacciego
- Równania z wieloma zmiennymi
- Najd艂u偶sza wspólna podsekwencja
- Najd艂u偶szy wspólny pod艂a艅cuch
- Heurystyczne techniki programowania
- Uwagi bibliograficzne
- Programowanie typu dziel i zwyci臋偶aj
- Rozdzia艂 15. Algorytmy grafowe
- Definicje i poj臋cia podstawowe
- Etykiety i warto艣ci
- Cykle w grafach
- Sposoby reprezentacji grafów
- Reprezentacja tablicowa
- S艂owniki w臋z艂ów
- Listy kontra zbiory
- Podstawowe operacje na grafach
- Suma grafów
- Kompozycja grafów
- Graf do pot臋gi
- Algorytm Roya-Warshalla
- Algorytm Floyda-Warshalla
- Algorytm Dijkstry
- Algorytm Bellmana-Forda
- Drzewo rozpinaj膮ce minimalne
- Algorytm Kruskala
- Algorytm Prima
- Przeszukiwanie grafów
- Strategia w g艂膮b (przeszukiwanie zst臋puj膮ce)
- Strategia wszerz
- Inne strategie przeszukiwania
- Problem w艂a艣ciwego doboru
- Podsumowanie
- Zadania
- Zadanie 1.
- Zadanie 2.
- Zadanie 3.
- Zadanie 4.
- Definicje i poj臋cia podstawowe
- Rozdzia艂 16. Algorytmy numeryczne
- Poszukiwanie miejsc zerowych funkcji
- Iteracyjne obliczanie warto艣ci funkcji
- Interpolacja funkcji metod膮 Lagrangea
- Ró偶niczkowanie funkcji
- Ca艂kowanie funkcji metod膮 Simpsona
- Biblioteki naukowe dla Javy
- Uwagi ko艅cowe
- Rozdzia艂 17. Kodowanie i kompresja danych
- Kodowanie danych i arytmetyka du偶ych liczb
- Metody prymitywne
- Kodowanie symetryczne
- Kodowanie asymetryczne
- Obliczenia na bardzo du偶ych liczbach ca艂kowitych
- Klasa BigInteger
- 艁amanie kodów
- Jako艣膰 klucza szyfruj膮cego
- Metody 艂amania szyfrów
- Techniki kompresji danych
- Kompresja za pomoc膮 modelowania matematycznego
- Kompresja metod膮 RLE
- Kompresja danych metod膮 Huffmana
- FAZA REDUKCJI (kierunek: w dó艂)
- FAZA KONSTRUKCJI KODU (kierunek: w gór臋)
- Kodowanie LZW
- Przyk艂ad kodowania LZW
- Przyk艂ad dekodowania LZW
- Praktyczne u偶ycie LZW w formacie GIF
- Kodowanie danych i arytmetyka du偶ych liczb
- Rozdzia艂 18. Czy komputery mog膮 my艣le膰?
- Przegl膮d obszarów zainteresowa艅 sztucznej inteligencji (SI)
- Systemy eksperckie
- Sieci neuronowe
- Reprezentacja problemów
- Przyk艂ad 1.
- Przyk艂ad 2.
- 膯wiczenie 1.
- Gry dwuosobowe i drzewa gier
- Algorytm min-max
- Przegl膮d obszarów zainteresowa艅 sztucznej inteligencji (SI)
- Rozdzia艂 19. Zadania ró偶ne
- Teksty zada艅
- Zadanie 1.
- Zadanie 2.
- Zadanie 3.
- Zadanie 4.
- Zadanie 5.
- Zadanie 6.
- Zadanie 7.
- Zadanie 8.
- Zadanie 9.
- Zadanie 10.
- Zadanie 11.
- Zadanie 12.
- Rozwi膮zania
- Zadanie 1.
- Zadanie 3.
- Zadanie 4.
- Zadanie 10.
- Zadanie 11.
- Teksty zada艅
- Dodatek A Java szybki start
- Instalacja 艣rodowiska Java
- 艢rodowiska IDE do Javy
- Konfiguracja 艣rodowiska Java
- Systemy pochodne UNIX (np. Linux)
- System Windows
- Kompilujemy program w Javie
- Pakiety w Javie
- Poznaj Jav臋 w 5 minut!
- Elementy j臋zyka Java na przyk艂adach
- Sterowanie przebiegiem programu
- Instrukcja if else
- Instrukcja wyboru (switch)
- Iteracje
- P臋tla for
- P臋tle while
- Konwersje typów i wprowadzanie danych
- Operacje na plikach w Javie
- Funkcje matematyczne w Javie
- Literatura
- Spis rysunków
- Spis tabel