Роберт Седжвик тщательно переписал, существенно расширил и обновил свою популярную книгу Алгоритмы на C++, чтобы получилось современное и исчерпывающее описание важных алгоритмов и структур данных. Вместе с Кристофером Ван Виком он разработал новые реализации на C++, которые выражают эти методы в сжатом, но наглядном виде, а также предоставляют программистам практические средства для их проверки в реальных приложениях.
В книге представлено много новых алгоритмов, а их объяснения гораздо более подробны, чем в предыдущем издании. Новая структура текста и подробные иллюстрации к нему вместе с сопутствующими комментариями значительно улучшают представление материала. Третье издание также содержит удачное сочетание теории и практики, которые делают работу Седжвика бесценным источником.
В частях 1–4 книги рассматриваются фундаментальные алгоритмы, структуры данных, сортировка и поиск. В ней приведено подробное описание фундаментальных структур данных и алгоритмов для сортировки, поиска и сопутствующих приложений. Хотя, по сути, материал книги применим к программированию на любом языке, реализации Ван Вика и Седжвика используют естественную связь между классами C++ и реализациями абстрактных типов данных (АТД). В части 5 книги рассматриваются алгоритмы на графах, которые играют все более важную роль во множестве приложений, таких как сетевая связность, конструирование электронных схем, составление графиков, обработка транзакций и выделение ресурсов.
Каждая часть содержит новые алгоритмы и реализации, усовершенствованные описания и диаграммы, а также множество новых упражнений для лучшего усвоения материала. Акцент на АТД расширяет диапазон применения программ и лучше соотносится с современными средами объектно-ориентированного программирования. В этой книге описаны следующие тем:
· Подробное описание массивов, связных списков, строк, деревьев и других базовых структур данных
· Акцентирование внимание на абстрактных типах данных (АТД), модульном программировании, объектно-ориентированном программировании и классах C++
· Более 100 алгоритмов сортировки, выбора, реализаций АТД очереди с приоритетами и реализаций АТД таблицы символов (для поиска)
· Новые реализации биномиальных очередей, многопутевой поразрядной сортировки, рандомизированных BST-деревьев, скошенных деревьев, слоеных списков, многопутевых trie-деревьев, B-деревьев, расширяемого хеширования и многих других методов
· Больший объем численных характеристик алгоритмов, позволяющих сравнивать их
· Более 1000 новых упражнений, которые помогают разобраться в свойствах алгоритмов
· Полный обзор свойств и типов графов
· Орграфы и DAG-графы
· Минимальные остовные деревья
· Кратчайшие пути
· Сетевые потоки
· Диаграммы, примеры кода на C++ и подробные описания алгоритмов
Настоящее издание предоставляет программистам полный инструментальный набор для реализации, отладки и использования алгоритмов в широком диапазоне компьютерных приложений.
Об авторах
Роберт Седжвик – профессор компьютерных наук в Принстонском университете. Занимает должность директора в компании Adobe Systems, работал в исследовательских коллективах в Xerox PARC, Институте оборонного анализа и INRIA. Вместе с Филиппом Флажоле (Philippe Flajolet) написал книгу An Introduction to the Analysis of Algorithms.
Кристофер Дж. Ван Вик – профессор математики и компьютерных наук и заодно заместитель декана в Университете Дрю. Работал в исследовательском коллективе в Bell Laboratories. И Седжвик, и Ван Вик получили свои степени доктора философии в Университете Стэнфорда под руководством Дональда Э. Кнута.
Оглавление
Об авторах
Введение
Часть I. Анализ
Глава 1. Введение
Глава 2. Принципы анализа алгоритмов
Часть II. Структуры данных
Глава 3. Элементарные структуры данных
Глава 4. Абстрактные типы данных
Глава 5. Рекурсия и деревья
Часть III. Сортировка
Глава 6. Элементарные методы сортировки
Глава 7. Быстрая сортировка
Глава 8. Слияние и сортировка слиянием
Глава 9. Очереди с приоритетами и пирамидальная сортировка
Глава 10. Поразрядная сортировка
Глава 11. Специальные методы сортировки
Часть IV. Поиск
Глава 12. Таблицы символов и деревья бинарного поиска
Глава 13. Сбалансированные деревья
Глава 14. Хеширование
Глава 15. Поразрядный поиск
Глава 16. Внешний поиск
Часть V. Алгоритмы на графах
Глава 17. Виды графов и их свойства
Глава 18. Поиск на графе
Глава 19. Орграфы и DAG-графы
Глава 20. Минимальные остовные деревья
Глава 21. Кратчайшие пути
Глава 22. Потоки в сетях
Розгорнути ⇓