Nauka algorytmów. Poradnik pisania lepszego kodu - Helion


Tytuł oryginału: Learning Algorithms: A Programmer's Guide to Writing Better Code
Tłumaczenie: Tomasz Walczak
ISBN: 978-83-283-8799-7
stron: 270, Format: 168x237, okładka: miękka
Data wydania: 2021-11-01
Księgarnia: Helion
Cena książki: 41,30 zł (poprzednio: 59,00 zł)
Oszczędzasz: 30% (-17,70 zł)
DoskonaÅ‚e opanowanie dowolnego jÄ™zyka programowania nie wystarczy do tego, aby stać siÄ™ Å›wietnym programistÄ… czy deweloperem. Konieczne jest również zdobycie praktycznej wiedzy dotyczÄ…cej algorytmów. Oznacza to, że aby pisać lepszy kod, podczas rozwiÄ…zywania rzeczywistych problemów trzeba umieć korzystać z algorytmów, włączajÄ…c w to ich budowanie, modyfikacjÄ™ i implementacjÄ™. Niezależnie od tego, jakÄ… dziedzinÄ… informatyki siÄ™ zajmujesz, biegÅ‚ość w posÅ‚ugiwaniu siÄ™ algorytmami w wymierny sposób uÅ‚atwi Ci pracÄ™ i poprawi jej rezultaty.
Ta książka jest przystÄ™pnym wprowadzeniem do wiedzy o algorytmach wraz z przykÅ‚adami implementacji napisanymi w Pythonie. Oprócz praktycznego omówienia algorytmów znalazÅ‚o siÄ™ tu wyjaÅ›nienie takich pojęć jak klasy zÅ‚ożonoÅ›ci czy analiza asymptotyczna. DokÅ‚adnie omówiono także najważniejsze algorytmy, w tym różne sposoby haszowania, sortowania czy przeszukiwania. Tam, gdzie to niezbÄ™dne, wprowadzono struktury danych jÄ™zyka Python. Z poradnika programiÅ›ci i testerzy dowiedzÄ… siÄ™, w jaki sposób wykorzystywać algorytmy do pomysÅ‚owego rozwiÄ…zywania problemów obliczeniowych. Zrozumienie treÅ›ci uÅ‚atwiajÄ… ciekawe materiaÅ‚y wizualne i ćwiczenia utrwalajÄ…ce, które pozwolÄ… na przetestowanie zdobytej wiedzy w praktyce.
W książce między innymi:
- podstawowe algorytmy wykorzystywane w inżynierii oprogramowania
- standardowe strategie wydajnego rozwiÄ…zywania problemów
- ocena złożoności czasowej kodu z wykorzystaniem notacji dużego O
- praktyczne stosowanie algorytmów z wykorzystaniem bibliotek i struktury danych Pythona
- gÅ‚ówne zasady dziaÅ‚ania ważnych algorytmów
Osoby które kupowały "Nauka algorytmów. Poradnik pisania lepszego kodu", wybierały także:
- Projektowanie oprogramowania dla zupełnie początkujących. Owoce programowania. Wydanie V 125,48 zł, (38,90 zł -69%)
- Nauka algorytm 59,00 zł, (29,50 zł -50%)
- 40 algorytmów, które powinien znać każdy programista. Nauka implementacji algorytmów w Pythonie 69,00 zł, (34,50 zł -50%)
- Komputer kwantowy. Programowanie, algorytmy, kod 67,00 zł, (33,50 zł -50%)
- Matematyka dla programistów Java 89,00 zł, (44,50 zł -50%)
Spis treści
Nauka algorytmów. Poradnik pisania lepszego kodu -- spis tre¶ci
Przedmowa
Wprowadzenie
- Dla kogo przeznaczona jest ta ksi±¿ka?
- O kodzie
- Konwencje u¿ywane w tej ksi±¿ce
- Podziêkowania
1. Rozwi±zywanie problemów
- Czym jest algorytm?
- Znajdowanie najwiêkszej warto¶ci w dowolnej li¶cie
- Zliczanie kluczowych operacji
- Modele pozwalaj± prognozowaæ wydajno¶æ algorytmu
- Znajdowanie dwóch najwiêkszych warto¶ci na dowolnej li¶cie
- Algorytm pucharowy
- Z³o¿ono¶æ czasowa i pamiêciowa
- Podsumowanie
- Æwiczenia
2. Analiza algorytmów
- U¿ywanie modeli empirycznych do prognozowania wydajno¶ci
- Mno¿enie mo¿na wykonywaæ szybciej
- Klasy z³o¿ono¶ci
- Analiza asymptotyczna
- Zliczanie wszystkich operacji
- Zliczanie wszystkich bajtów
- Gdy zamykaj± siê jedne drzwi, otwieraj± siê inne
- Wyszukiwanie binarne w tablicy
- Prawie tak ³atwe jak ?
- Dwie pieczenie na jednym ogniu
- £±czenie wszystkich elementów
- Dopasowywanie do krzywej a dolna i górna granica
- Podsumowanie
- Æwiczenia
3. Lepsze ¿ycie dziêki lepszemu haszowaniu
- £±czenie warto¶ci z kluczami
- Funkcje haszuj±ce i skróty
- Tablica z haszowaniem dla par (klucz, warto¶æ)
- Wykrywanie i rozwi±zywanie kolizji za pomoc± próbkowania liniowego
- Tworzenie odrêbnych ³añcuchów dziêki listom powi±zanym
- Usuwanie elementu z listy powi±zanej
- Ocena wydajno¶ci
- Zwiêkszanie rozmiaru tablic z haszowaniem
- Analiza wydajno¶ci dynamicznych tablic z haszowaniem
- Haszowanie doskona³e
- Iteracyjne pobieranie par (klucz, warto¶æ)
- Podsumowanie
- Æwiczenia
4. Wêdrówka po kopcu
- Kopce binarne typu max
- Wstawianie elementu (warto¶æ, priorytet)
- Usuwanie warto¶ci o najwy¿szym priorytecie
- Reprezentowanie kopca binarnego za pomoc± tablicy
- Implementacja "wyp³ywania" i "zatapiania"
- Podsumowanie
- Æwiczenia
5. Sortowanie bez tajemnic
- Sortowanie przez przestawianie
- Sortowanie przez wybieranie
- Budowa algorytmu sortowania o z³o¿ono¶ci kwadratowej
- Analizowanie wydajno¶ci sortowania przez wstawianie i sortowania przez wybieranie
- Rekurencja oraz podej¶cie dziel i rz±d¼
- Sortowanie przez scalanie
- Sortowanie szybkie
- Sortowanie przez kopcowanie
- Porównanie wydajno¶ci algorytmów o z³o¿ono¶ci O(N log N)
- Algorytm timsort
- Podsumowanie
- Æwiczenie
6. Drzewa binarne - nieskoñczono¶æ na wyci±gniêcie rêki
- Wprowadzenie
- Binarne drzewa poszukiwañ
- Szukanie warto¶ci w binarnym drzewie poszukiwañ
- Usuwanie warto¶ci z binarnego drzewa poszukiwañ
- Przechodzenie drzewa binarnego
- Analiza wydajno¶ci binarnych drzew poszukiwañ
- Samoorganizuj±ce siê drzewa binarne
- Analiza wydajno¶ci drzew samoorganizuj±cych siê
- U¿ywanie drzewa binarnego jako tablicy symboli (klucz, warto¶æ)
- U¿ywanie drzewa binarnego jako kolejki priorytetowej
- Podsumowanie
- Æwiczenia
7. Grafy - po³±cz punkty
- Grafy s³u¿± do wydajnego zapisywania przydatnych informacji
- Znajdowanie drogi w labiryncie za pomoc± przeszukiwania w g³±b
- Inna strategia - przeszukiwanie wszerz
- Grafy skierowane
- Grafy z wagami krawêdzi
- Algorytm Dijkstry
- Najkrótsze ¶cie¿ki dla wszystkich par
- Algorytm Floyda-Warshalla
- Podsumowanie
- Æwiczenia
8. Podsumowanie
- Wbudowane typy Pythona
- Implementowanie stosu w Pythonie
- Implementowanie kolejek w Pythonie
- Implementacje kopca i kolejki priorytetowej
- Dalsza nauka
O autorach