Программирование, всегда было достаточно сложной задачей. Эта книга поможет вам легко преодолеть возникающие трудности с помощью библиотеки мощных алгоритмов, полностью реализованных в исходном коде Delphi. Вы узнаете, как выбрать способ, наиболее подходящий для решения конкретной задачи, и как добиться максимальной производительности вашего приложения. Рассматриваются типичные и наихудшие случаи реализации алгоритмов, что позволит вам вовремя распознать возможные трудности и при необходимости переписать или заменить часть программы. Подробно описываются важнейшие элементы алгоритмов хранения и обработки данных (списки, стеки, очереди, деревья, сортировка, поиск, хеширование и т. д.). Приводятся не только традиционные решения, но и методы, основанные на последних достижениях объектно-ориентированного программирования. Книга предназначена для начинающих программистов на Delphi, но благодаря четкой структуризации материала и богатой библиотеке готовых алгоритмов будет также интересна и специалистам.
Введение Глава 1. Основные понятия Что такое алгоритмы Анализ скорости выполнения, алгоритмов Средний и наихудший случай Общие функции оценки сложности Скорость работы алгоритма в реальных условиях Резюме Глава 2. Списки Основные понятия о списках Простые списки Неупорядоченные списки Связанные списки Разновидности связанных списков Другие связанные структуры Резюме Глава 3. Стеки и очереди Стеки Очереди Резюме Глава 4. Массивы Треугольные массивы Нерегулярные массивы Разреженные массивы Сильно разреженные массивы Резюме Глава 5. Рекурсия Что такое рекурсия Рекурсивное вычисление факториалов Рекурсивное вычисление наибольшего общего делителя Рекурсивное вычисление чисел Фибоначчи Рекурсивное построение кривых Гильберта Рекурсивное построение кривых Серпинского Недостатки рекурсии Удаление хвостовой рекурсии Нерекурсивное вычисление чисел Фибоначчи Устранение рекурсии в общем случае Нерекурсивное создание кривых Гильберта Нерекурсивное построение кривых Серпинского Резюме Глава 6. Деревья Определения Представления деревьев Обход дерева Упорядоченные деревья Деревья со ссылками Q-деревья Резюме Глава 7. Сбалансированные деревья Балансировка AVL-деревья Б-деревья Резюме Глава 8. Деревья решений Поиск в игровых деревьях Поиск нестандартных решений Сложные задачи Резюме Глава 9. Сортировка Общие принципы Пример программы Сортировка выбором Перемешивание Сортировка вставкой Пузырьковая сортировка Быстрая сортировка Сортировка слиянием Пирамидальная сортировка Сортировка подсчетом Блочная сортировка Резюме Глава 10. Поиск Примеры программ Полный перебор Двоичный поиск Интерполяционный поиск Строковые данные Следящий поиск Резюме Глава 11. Хеширование Связывание Блоки Открытая адресация Резюме Глава 12. Сетевые алгоритмы Определения Представления сетей Обход сети Наименьший каркас дерева Кратчайший путь Максимальный поток Резюме Глава 13. Объектно-ориентированные методы Преимущества ООП Парадигмы ООП Резюме Приложение 1. Архив примеров Содержание архива с примерами Аппаратные требования Запуск примеров программ Информация и поддержка пользователей Приложение 2. Список примеров программ Предметный указатель