Введение

Часть I. Основы
Глава 1. Роль алгоритмов в вычислениях
Глава 2. Приступаем к изучению
Глава 3. Рост функций
Глава 4. Рекуррентные соотношения
Глава 5. Вероятностный анализ и рандомизированные алгоритмы

Часть II. Сортировка и порядковая статистика
Глава 6. Пирамидальная сортировка
Глава 7. Быстрая сортировка
Глава 8. Сортировка за линейное время
Глава 9. Медианы и порядковые статистики

Часть III. Структуры данных
Глава 10. Элементарные структуры данных
Глава 11. Хеш-таблицы
Глава 12. Бинарные деревья поиска
Глава 13. Красно-черные деревья
Глава 14. Расширение структур данных

Часть IV. Усовершенствованные методы разработки и анализа
Глава 15. Динамическое программирование
Глава 16. Жадные алгоритмы
Глава 17. Амортизационный анализ

Часть V. Сложные структуры данных
Глава 18. B-деревья
Глава 19. Биномиальные пирамиды
Глава 20. Фибоначчиевы пирамиды
Глава 21. Структуры данных для непересекающихся множеств

Часть VI. Алгоритмы для работы с графами
Глава 22. Элементарные алгоритмы для работы с графами
Глава 23. Минимальные остовные деревья
Глава 24. Кратчайшие пути из одной вершины
Глава 25. Кратчайшие пути между всеми парами вершин
Глава 26. Задача о максимальном потоке

Часть VII. Избранные темы
Глава 27. Сортирующие сети
Глава 28. Работа с матрицами
Глава 29. Линейное программирование
Глава 30. Полиномы и быстрое преобразование фурье
Глава 31. Теоретико-числовые алгоритмы
Глава 32. Поиск подстрок
Глава 33. Вычислительная геометрия
Глава 34. Np-полнота
Глава 35. Приближенные алгоритмы

Часть VIII. Приложения: математические основы
Приложение А. Ряды
Приложение Б. Множества и прочие художества
Приложение В. Комбинаторика и теория вероятности
Библиография
Предметный указатель