| Előszó | 11 |
| A szerzők előszava az angol nyelvű kiadáshoz | 11 |
| A szerzők előszava a magyar nyelvű kiadáshoz | 18 |
| Előszó a magyar nyelvű kiadáshoz | 19 |
| I. ALAPOK | 20 |
| Bevezetés | 21 |
| Az algoritmusok szerepe a számításokban | 23 |
| Algoritmusok | 23 |
| Algoritmusok mint technológia | 27 |
| Elindulunk | 31 |
| Beszúró rendezés | 31 |
| Algoritmusok elemzése | 36 |
| Algoritmusok tervezése | 41 |
| Függvények növekedése | 53 |
| Aszimptotikus jelölések | 53 |
| Szokásos jelölések és alapfüggvények | 61 |
| Függvények rekurzív megadása | 70 |
| A helyettesítő módszer | 71 |
| A rekurziós fa módszer | 75 |
| A mester módszer | 79 |
| A mester tétel bizonyítása | 82 |
| Valószínűségi elemzés | 95 |
| A munkatársfelvétel probléma | 95 |
| Indikátor valószínűségi változók | 98 |
| Véletlenített algoritmusok | 101 |
| További példák valószínűségi elemzésre | 108 |
| II. RENDEZÉSEK ÉS RENDEZETT MINTÁK | 122 |
| Bevezetés | 123 |
| Kupacrendezés | 126 |
| Kupac | 126 |
| A kupactulajdonság fenntartása | 128 |
| A kupac építése | 130 |
| A kupacrendezés algoritmus | 133 |
| Elsőbbségi sorok | 135 |
| Gyorsrendezés | 141 |
| A gyorsrendezés leírása | 141 |
| A gyorsrendezés hatékonysága | 145 |
| A gyorsrendezés egy véletlenített változata | 148 |
| A gyorsrendezés elemzése | 149 |
| Rendezési lineáris időben | 157 |
| Alsó korlátok a rendezés időigényére | 157 |
| Leszámoló rendezés | 159 |
| Számjegyes rendezés | 162 |
| Edényrendezés | 164 |
| Mediánok és rendezett minták | 172 |
| Minimális és maximális elem | 172 |
| Kiválasztás átlagosan lineáris időben | 174 |
| Kiválasztás legrosszabb esetben lineáris időben | 177 |
| III. ADATSZERKEZETEK | 184 |
| Bevezetés | 185 |
| Elemi adatszerkezetek | 188 |
| Vermek és sorok | 188 |
| Láncolt listák | 191 |
| Mutatók és objektumok megvalósítása | 195 |
| Gyökeres fák ábrázolása | 199 |
| Hasító táblázatok | 205 |
| Közvetlen címzésű táblázatok | 205 |
| Hasító táblázatok | 207 |
| Hasító függvények | 212 |
| Nyúlt címzés | 218 |
| Tökéletes hasítás | 225 |
| Bináris keresőfák | 232 |
| Mi a bináris keresőfa? | 232 |
| Keresés bináris keresőfában | 234 |
| Beszúrás és törlés | 238 |
| Véletlen építésű bináris keresőfák | 241 |
| Piros-fekete fák | 249 |
| Piros-fekete fák tulajdonságai | 249 |
| Forgatások | 252 |
| Beszúrás | 254 |
| Törlés | 260 |
| Adatszerkezetek kibővítése | 272 |
| Dinamikus rendezett minta | 272 |
| Hogyan bővítsünk adatszerkezetet | 277 |
| Intervallum-fák | 279 |
| IV. FEJLETT ELEMZÉSI ÉS TERVEZÉSI MÓDSZEREK | 286 |
| Bevezetés | 287 |
| Dinamikus programozás | 288 |
| Szerelőszalag ütemezése | 289 |
| Mátrixok véges sorozatainak szorzása | 295 |
| A dinamikus programozás elemei | 301 |
| A leghosszabb közös részsorozat | 309 |
| Optimális bináris kereső fák | 314 |
| Mohó algoritmusok | 326 |
| Egy eseménykiválasztási probléma | 327 |
| A mohó statégia elemei | 334 |
| Huffman-kód | 338 |
| A mohó módszerek elméleti alapjai | 345 |
| Egy ütemezési probléma | 350 |
| Amortizációs elemzés | 355 |
| Összesítés elemzés | 356 |
| A könyvelési módszer | 359 |
| A potenciál módszer | 361 |
| Dinamikus táblálk | 364 |
| V. FEJLETT ADATSZERKEZETEK | 376 |
| B-fák | 380 |
| A B-fa definíciója | 383 |
| A B-fák alapműveletei | 386 |
| Egy kulcs törlése a B-fából | 392 |
| Binomiális kupacok | 398 |
| Binomiális fák és binomiális kupacok | 399 |
| A binomiális kupacokon értelmezet műveletek | 403 |
| Fibonacci-kupacok | 416 |
| A Fibonacci-kupacok szerkezete | 417 |
| Összefésülhető-kupac műveletek | 419 |
| Egy kulcs csökkentése és egy csúcs törlése | 427 |
| A maximális fokszám korlátja | 430 |
| Adatszerkezetek diszjunkt halmazokra | 435 |
| Diszjunkt-halmaz műveletek | 435 |
| Diszjunkt halmazok láncolt listák ábrázolása | 438 |
| Diszjunkt-halmaz erdők | 441 |
| A rang szerinti egyesítés és az úttömörítés együttes használatának elemzése | 444 |
| VI. GRÁFALGORITMUSOK | 456 |
| Bevezetés | 457 |
| Elemi gráfalgoritmusok | 458 |
| Gráfok ábrázolási módjai | 458 |
| Szélességi keresés | 461 |
| Mélységi keresés | 468 |
| Topologikus rendezés | 475 |
| Erősen összefüggő komponensek | 478 |
| Minimális feszítőfák | 485 |
| Minimális feszífőfa növelése | 486 |
| Kruskal és Prim algoritmusai | 490 |
| Adott csúcsból induló legrövidebb utak | 500 |
| Bellman-Ford-algoritmus | 507 |
| Adott kezdőcsúcsból induló legrövidebb utak irányított körmentes gráfokban | 510 |
| Dijkstra algoritmusa | 512 |
| Különbségi korlátok és legrövidebb utak | 517 |
| A legrövidebb utak tulajdonságainak bizonyítása | 522 |
| Legrövidebb utan minden csúcspárra | 533 |
| Egy mátrixszorzás típusú módszer | 535 |
| A Floyd-Warshall-algoritmus | 540 |
| Johnson algoritmusa | 545 |
| Maximális folyamok | 552 |
| Hálózati folyamok | 553 |
| Ford és Fulkerson algoritmusa | 558 |
| Maximális párosítás páros gráfban | 569 |
| Előfolyam-algoritmusok | 573 |
| Az előreemelő algoritmus | 582 |
| VII. VÁLOGATOTT FEJEZETEK | 598 |
| Bevezetés | 599 |
| Rendező hálózatok | 601 |
| Összehasonlító hálózatok | 601 |
| A nulla-egy elv | 605 |
| Biton sorozatokat rendező hálózat | 607 |
| Összefésülő hálózat | 611 |
| Rendező hálózat | 612 |
| Mátrixszámítás | 618 |
| Mátrixok alaptulajdonságai | 618 |
| Strassen mátrixszorzási algoritmusa | 626 |
| Lineáris egyenletrendszerek megoldása | 632 |
| Mátrixok invertálása | 643 |
| Szimmetrikus pozitív definit mátrixok és a legkisebb négyzetes közelítés | 647 |
| Lineáris programozás | 657 |
| A szabályos és kiegyenlített alak | 663 |
| Problémák mint lineáris programozási feladatok | 670 |
| A szimplex módszer | 675 |
| Dualitás | 688 |
| Polinomok és gyors Fourier-transzformáció | 703 |
| Polinomok megadása | 705 |
| A DFT és az FFT algoritmus | 710 |
| Az FFT egy hatékony megvalósítása | 717 |
| Számelméleti algoritmusok | 725 |
| Elemi számelméleti fogalmak | 726 |
| A legnagyobb közös osztó | 731 |
| Műveletek maradékosztályokkal | 735 |
| Lineáris kongruenciák megoldása | 741 |
| A kínai maradététel | 744 |
| Egy elem hatványai | 747 |
| Az RSA nyilvános kulcsú titkosírás | 750 |
| Prímtesztelés | 756 |
| Egészek prímfelbontása | 763 |
| Mintaillesztés | 771 |
| Egy egyszerű mintaillesztő algoritmus | 773 |
| Rabin-Karp-algoritmus | 775 |
| Mintaillesztés vége automatákkal | 779 |
| Knuth-Morris-Pratt-algoritmus | 784 |
| Geometriai algoritmusok | 793 |
| A szakaszok tulajdonságai | 793 |
| Metsző szakaszpár létezésének vizsgálata | 799 |
| Ponthalmaz konvex burka | 804 |
| Az egymáshoz legközelebbi két pont megkeresése | 813 |
| NP-teljesség | 820 |
| Polinomiális idő | 824 |
| Polinomális idejű ellenőrzés | 830 |
| NP-teljesség és visszavezethetőség | 833 |
| NP-teljességi bizonyítások | 842 |
| NP-teljes problémák | 848 |
| Közelítő algoritmusok | 863 |
| Minimális lefedő csúcshalmaz | 865 |
| Az utazóügynök feladat | 867 |
| A minimális lefogó részhalmaz | 872 |
| Véletlenítés és lineáris programozás | 876 |
| A részletösszeg feladat | 881 |
| VIII. BEVEZETÉS A MATEMATIKÁBA | 890 |
| Összegzések | 892 |
| Összegzések és tulajdonságaik | 892 |
| Összegek nagyságrendi becslése | 896 |
| Halmazok és más alapfogalmak | 903 |
| Halmazok | 903 |
| Relációk | 907 |
| Függvények | 909 |
| Gráfok | 911 |
| Fák | 915 |
| Leszámlálás és valószínűség | 923 |
| Leszámlálás | 923 |
| Valószínűség | 928 |
| Diszkrét valószínűségi változók | 934 |
| A geometriai és a binomiális eloszlás | 938 |
| A binomiális eloszlás farkai | 943 |
| Irodalomjegyzék | 951 |
| Tárgymutató | 965 |