Spis treści

Transkrypt

Spis treści
Spis treści
Od autora... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
Wyróżnienia i oznaczenia w tekście . . . . . . . . . . . . . . . . . . . . . . . . . .
11
1. Algorytmy i sposoby ich przedstawiania . . . . . . . . . . . . . . . . . . . . . .
13
1.1. Algorytmy w procesie powstawania . . . . . . . . . . .
1.2. Algorytmy na przestrzeni wieków . . . . . . . . . . . .
1.3. Reprezentacje problemów i algorytmów . . . . . . . .
1.3.1. Roboczy przykład . . . . . . . . . . . . . . . . . .
1.3.2. Słowny opis algorytmu . . . . . . . . . . . . . . .
1.3.3. Opis algorytmu w postaci listy kroków . . . . . .
1.3.4. Schemat blokowy algorytmu . . . . . . . . . . . .
1.3.5. Drzewo algorytmu . . . . . . . . . . . . . . . . .
1.3.6. Drzewo wyrażenia . . . . . . . . . . . . . . . . .
1.3.7. Schemat algorytmu utworzony w programie ELI
1.3.8. Program zapisany w języku Pascal . . . . . . . . .
1.4. Zasoby elektroniczne towarzyszące książce . . . . . . .
1.5. Ćwiczenia, zadania, problemy . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
13
14
19
20
20
21
22
23
24
25
27
28
29
2. Algorytmy liniowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
2.1. Zadania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
3. Algorytmy z rozgałęzieniami . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
3.1. Rozwiązywanie równania kwadratowego
3.2. Rozwiązywanie równania liniowego . . .
3.3. Rozwiązywanie układu równań liniowych
3.4. Zadania . . . . . . . . . . . . . . . . . .
4. Porządkowanie kilku liczb
.
.
.
.
.
.
.
.
5. O czym mówią dane — algorytmy iteracyjne
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
60
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
51
53
54
59
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5.1. Reprezentowanie i przeszukiwanie zbioru . . . . . .
5.1.1. Reprezentowanie zbioru danych w algorytmach
5.1.2. Liniowe przeszukiwanie zbioru . . . . . . . . .
5.2. Obliczanie średniej . . . . . . . . . . . . . . . . . . .
5.3. Znajdowanie największego elementu . . . . . . . . .
5.4. Kompletowanie podium zwycięzców . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
51
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
36
41
45
50
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4.1. Porządkowanie trzech liczb . .
4.2. Porządkowanie czterech liczb
4.3. Porządkowanie pięciu liczb . .
4.4. Zadania i problemy . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
62
62
63
67
69
72
6
ALGORYTMY
5.5. Znajdowanie jednocześnie największego i najmniejszego elementu . .
5.6. Obliczanie innych miar centralności danych . . . . . . . . . . . . . . .
5.6.1. Znajdowanie lidera w zbiorze . . . . . . . . . . . . . . . . . . . .
5.7. Zadania i problemy . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
75
80
81
84
6. Porządkowanie ciągu elementów . . . . . . . . . . . . . . . . . . . . . . . . . .
87
6.1. Algorytm bąbelkowy . . . . . . . . . . . . .
6.2. Porządkowanie przez wybór . . . . . . . . .
6.3. Porządkowanie kubełkowe i pozycyjne . . .
6.3.1. Porządkowanie kubełkowe . . . . . .
6.3.2. Porządkowanie pozycyjne . . . . . . .
6.3.3. Realizacja porządkowania pozycyjnego
6.3.4. Złożoność porządkowania pozycyjnego
6.4. Zadania i problemy . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
88
92
96
96
97
103
105
106
7. Inne algorytmy iteracyjne — schemat Hornera, algorytm Euklidesa,
sito Eratostenesa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
108
7.1. Zapisywanie liczb w systemie binarnym . . . . . . . . .
7.2. Schemat Hornera . . . . . . . . . . . . . . . . . . . . .
7.3. Zastosowania schematu Hornera . . . . . . . . . . . .
7.3.1. Zamiana liczby z systemu binarnego na dziesiętny
7.3.2. Szybkie podnoszenie do potęgi . . . . . . . . . .
7.4. Algorytm Euklidesa . . . . . . . . . . . . . . . . . . . .
7.5. Zastosowania algorytmu Euklidesa . . . . . . . . . . .
7.5.1. Przelewanie wody . . . . . . . . . . . . . . . . .
7.5.2. Operacje na ułamkach zwykłych . . . . . . . . .
7.6. Liczby pierwsze i liczby złożone . . . . . . . . . . . . .
7.6.1. Rozkład liczby na czynniki pierwsze . . . . . . .
7.6.2. Sito Eratostenesa . . . . . . . . . . . . . . . . . .
7.7. Obliczanie wartości pierwiastka kwadratowego . . . . .
7.8. Zadania i problemy . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
145
145
149
151
152
153
159
163
9. Dziel i zwyciężaj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
165
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
9.1. Rekurencyjne znajdowanie największego i najmniejszego elementu
9.2. Przeszukiwanie binarne, czyli przez połowienie . . . . . . . . . . . .
9.3. Przeszukiwanie interpolacyjne . . . . . . . . . . . . . . . . . . . . .
9.4. Znajdowanie zera funkcji metodą połowienia przedziału . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
143
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
8. Algorytmy rekurencyjne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
108
113
115
115
116
120
123
123
127
129
131
134
136
140
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
8.1. Inne spojrzenie na iterację . . . . . .
8.1.1. Obliczanie wartości wielomianu
8.1.2. Obliczanie potęgi . . . . . . . .
8.1.3. Algorytm Euklidesa . . . . . .
8.2. Problemy z rekurencyjną naturą . . .
8.2.1. Wieże Hanoi . . . . . . . . . .
8.2.2. Liczby Fibonacciego . . . . . .
8.3. Zadania i problemy . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
166
171
178
181
7
Spis treści
9.5. Zadania i problemy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10. Porządkowanie ciągu elementów . . . . . . . . . . . . . . . . . . . . . . . . .
10.1. Porządkowanie przez umieszczanie . . . .
10.2. Porządkowanie przez scalanie . . . . . . .
10.2.1. Scalanie ciągów uporządkowanych
10.2.2. Porządkowanie przez scalanie . . .
10.3. Szybki algorytm porządkowania . . . . . .
10.4. Własności algorytmów porządkowania . .
10.5. Zadania i problemy . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
184
186
.
.
.
.
.
.
.
186
189
190
191
194
199
205
11. Wychodzenie z labiryntu i pakowanie plecaka . . . . . . . . . . . . . . . . . .
207
11.1. Znajdowanie wyjścia z labiryntu . . . . . . . . . . . . . . . . . . . . . .
11.1.1. Wychodzenie z labiryntu po omacku . . . . . . . . . . . . . . .
11.1.2. Przeszukiwanie z nawrotami w poszukiwaniu wyjścia . . . . . .
11.1.3. Znajdowanie najkrótszej drogi do wyjścia z labiryntu . . . . . .
11.2. Pakowanie najcenniejszego plecaka . . . . . . . . . . . . . . . . . . .
11.2.1. Algorytm zachłanny dla ogólnego problemu plecakowego . . .
11.2.2. Programowanie dynamiczne dla ogólnego problemu
plecakowego . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.2.3. Algorytm zachłanny dla decyzyjnego problemu plecakowego . .
11.2.4. Programowanie dynamiczne dla decyzyjnego problemu
plecakowego . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.2.5. Złożoność algorytmów rozwiązywania problemów plecakowych
11.3. Zadania i problemy . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
208
209
209
211
215
217
.
.
219
224
.
.
.
225
228
228
. . . . . . . . . . . . . . . . . . . .
231
.
.
.
.
.
.
.
.
.
.
231
233
237
239
240
13. Problemy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
242
13.1. Problemy łatwiejsze . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.2. Problemy trudniejsze . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
242
248
14. Gdzie szukać dalszych informacji o algorytmach . . . . . . . . . . . . . . . .
258
14.1. Opracowania podstawowe . . . . . . . . . . . . . . . . . . . . . . . . . .
14.2. Opracowania zaawansowane . . . . . . . . . . . . . . . . . . . . . . . .
258
262
15. Algorytmika w zadaniach maturalnych . . . . . . . . . . . . . . . . . . . . . .
264
Lista problemów, algorytmów oraz ich realizacji . . . . . . . . . . . . . . . . . .
Skorowidz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
281
284
12. Własności algorytmów — podsumowanie
12.1. Algorytmy — spojrzenie z lotu ptaka
12.2. Poprawność algorytmów . . . . . . .
12.3. Skończoność algorytmów . . . . . .
12.4. Złożoność i efektywność algorytmów
12.5. Zadania i problemy . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.