ОГЛАВЛЕНИЕ
Введение 30
Часть I. Основы 43
Глава 1. Роль алгоритмов в вычислениях 46
Глава 2. Приступаем к изучению 57
Глава 3. Рост функций 87
Глава 4. Рекуррентные соотношения 109
Глава 5. Вероятностный анализ и рандомизированные алгоритмы 140
Часть II. Сортировка и порядковая статистика 173
Глава 6. Пирамидальная сортировка 178
Глава 7. Быстрая сортировка 198
Глава 8. Сортировка за линейное время 220
Глава 9. Медианы и порядковые статистики 240
Часть III. Структуры данных 255
Глава 10. Элементарные структуры данных 260
Глава 11. Хеш-таблицы 282
Глава 12. Бинарные деревья поиска 316
Глава 13. Красно-черные деревья 336
Глава 14. Расширение структур данных 365
Часть IV. Усовершенствованные методы разработки и анализа 383
Глава 15. Динамическое программирование 386
Глава 16. Жадные алгоритмы 442
Глава 17. Амортизационный анализ 482
Часть V. Сложные структуры данных 511
Глава 18. B-деревья 515
Глава 19. Биномиальные пирамиды 537
6 Оглавление
Глава 20. Фибоначчиевы пирамиды 558
Глава 21. Структуры данных для непересекающихся множеств 581
Часть VI. Алгоритмы для работы с графами 607
Глава 22. Элементарные алгоритмы для работы с графами 609
Глава 23. Минимальные остовные деревья 644
Глава 24. Кратчайшие пути из одной вершины 663
Глава 25. Кратчайшие пути между всеми парами вершин 708
Глава 26. Задача о максимальном потоке 734
Часть VII. Избранные темы 795
Глава 27. Сортирующие сети 799
Глава 28. Работа с матрицами 823
Глава 29. Линейное программирование 869
Глава 30. Полиномы и быстрое преобразование Фурье 926
Глава 31. Теоретико-числовые алгоритмы 954
Глава 32. Поиск подстрок 1017
Глава 33. Вычислительная геометрия 1047
Глава 34. NP-полнота 1085
Глава 35. Приближенные алгоритмы 1151
Часть VIII. Приложения: математические основы 1189
Приложение А. Ряды 1191
Приложение Б. Множества и прочие художества 1202
Приложение В. Комбинаторика и теория вероятности 1226
Библиография 1257
Предметный указатель 1277