Фундаментальные алгоритмы и структуры данных в Delphi
Книга Фундаментальные алгоритмы и структуры данных в Delphi представляет собой уникальное учебное и справочное пособие по наиболее распространенным алгоритмам манипулирования данными, которые зарекомендовали себя как надежные и проверенные многими поколениями программистов. По данным журнала Delphi Informant за 2002 год, эта книга была признана сообществом разработчиков прикладных приложений на Delphi как «самая лучшая книга по практическому применению всех версий Delphi». В книге подробно рассматриваются базовые понятия алгоритмов и основополагающие структуры данных, алгоритмы сортировки, поиска, хеширования, синтаксического разбора, сжатия данных, а также многие другие темы, тесно связанные с прикладным программированием. Изобилие тщательно проверенных примеров кода существенно ускоряет не только освоение фундаментальных алгоритмов, но также и способствует более квалифицированному подходу к повседневному программированию. Несмотря на то что книга рассчитана в первую очередь на профессиональных разработчиков приложений на Delphi, она окажет несомненную пользу и начинающим программистам, демонстрируя им приемы и трюки, которые столь популярны у истинных «профи». Все коды примеров, упомянутые в книге, доступны для выгрузки на Web-сайте издательства.
- Введение
- Что такое алгоритм?
- Анализ алгоритмов
- О-нотация
- Лучший, средний и худший случаи
- Алгоритмы и платформы
- Виртуальная память и страничная организация памяти
- Пробуксовка
- Локальность ссылок
- Кэш процессора
- Выравнивание данных
- Пространство или время
- Длинные строки
- Использование ключевого слова const
- Осторожность в отношении автоматического преобразования типов
- Тестирование и отладка
- Утверждения
- Комментарии
- Протоколирование
- Трассировка
- Анализ покрытия
- Тестирование модулей
- Отладка
- Резюме1
- Массивы1
- Типы массивов в Delphi
- Стандартные массивы
- Динамические массивы
- Новые динамические массивы
- Класс TList, массив указателей
- Краткий обзор класса TList
- Класс TtdObjectList
- Массивы на диске
- Резюме2
- Односвязные списки
- Узлы связного списка
- Создание односвязного списка
- Вставка и удаление элементов в односвязном списке
- Прохождение связного списка
- Соображения по поводу эффективности
- Использование начального узла
- Использование диспетчера узлов
- Класс односвязного списка
- Двухсвязные списки
- Вставка и удаление элементов в двухсвязном списке
- Соображения по поводу эффективности
- Использование начального и конечного узлов
- Использование диспетчера узлов
- Класс двухсвязного списка
- Достоинства и недостатки связных списков
- Стеки
- Стеки на основе односвязных списков
- Стеки на основе массивов
- Пример использования стека
- Очереди
- Очереди на основе односвязных списков
- Очереди на основе массивов
- Резюме3
- Процедуры сравнения
- Последовательный поиск
- Массивы2
- Связные списки
- Бинарный поиск
- Массивы3
- Связные списки
- Вставка элемента в отсортированный контейнер
- Резюме4
- Алгоритмы сортировки
- Тасование массива TList
- Основы сортировки
- Самые медленные алгоритмы сортировки
- Пузырьковая сортировка
- Шейкер-сортировка
- Сортировка методом выбора
- Сортировка методом вставок
- Быстрые алгоритмы сортировки
- Сортировка методом Шелла
- Сортировка методом прочесывания
- Самые быстрые алгоритмы сортировки
- Сортировка слиянием
- Быстрая сортировка
- Сортировка слиянием для связных списков
- Резюме5
- Генерация случайных чисел
- Критерий хи-квадрат
- Метод средних квадратов
- Линейный конгруэнтный метод
- Тестирование
- Тест на однородность
- Тест на пропуски
- Тест "покер"
- Тест "сбор купонов"
- Результаты выполнения тестов
- Комбинирование генераторов
- Аддитивные генераторы
- Тасующие генераторы
- Выводы по алгоритмам генерации случайных чисел
- Другие распределения случайных чисел
- Списки с пропусками
- Поиск в списке с пропусками
- Вставка в список с пропусками
- Удаление из списка с пропусками
- Полная реализация класса связного списка
- Резюме6
- Функции хеширования
- Простая функция хеширования для строк
- Функции хеширования PJW
- Разрешение конфликтов посредством линейного зондирования
- Преимущества и недостатки линейного зондирования
- Удаление элементов из хеш-таблицы с линейным зондированием
- Класс хеш-таблиц с линейным зондированием
- Другие схемы открытой адресации
- Квадратичное зондирование
- Псевдослучайное зондирование
- Двойное хеширование
- Разрешение конфликтов посредством связывания
- Преимущества и недостатки связывания
- Класс связных хеш-таблиц
- Разрешение конфликтов посредством группирования
- Хеш-таблицы на диске
- Расширяемое хеширование
- Резюме7
- Создание бинарного дерева
- Вставка и удаление с использованием бинарного дерева
- Перемещение по бинарному дереву
- Обход в ширину, симметричный обход и обход в глубину
- Обход по уровням
- Реализация класса бинарных деревьев
- Деревья бинарного поиска
- Вставка в дереве бинарного поиска
- Удаление из дерева бинарного поиска
- Реализация класса дерева бинарного поиска
- Перекомпоновка дерева бинарного поиска
- Скошенные деревья
- Реализация класса скошенного дерева
- Красно-черные деревья
- Вставка в красно-черное дерево
- Удаление из красно-черного дерева
- Резюме8
- Очередь по приоритету
- Первая простая реализация
- Вторая простая реализация
- Сортирующее дерево
- Вставка в сортирующее дерево
- Удаление из сортирующего дерева
- Реализация очереди по приоритету при помощи сортирующего дерева
- Пирамидальная сортировка
- Алгоритм Флойда
- Завершение пирамидальной сортировки
- Расширение очереди по приоритету
- Восстановление свойства пирамидальное
- Отыскание произвольного элемента в сортирующем дереве
- Реализация расширенной очереди по приоритету
- Резюме9
- Конечные автоматы
- Использование конечного автомата: синтаксический анализ
- Синтаксический анализ файлов с разделяющими запятыми
- Детерминированные и недетерминированные конечные автоматы
- Регулярные выражения
- Использование регулярных выражений
- Синтаксический анализ регулярных выражений
- Компиляция регулярных выражений
- Сопоставление строк с регулярными выражениями
- Резюме10
- Представление данных
- Сжатие данных
- Типы сжатия
- Потоки битов
- Сжатие с минимальной избыточностью
- Кодирование Шеннона-Фано
- Кодирование Хаффмана
- Кодирование с использованием скошенного дерева
- Сжатие с использованием словаря
- Описание сжатия LZ77
- Особенности кодирования литеральных символов и пар расстояние/длина
- Восстановление с применением алгоритма LZ77
- Сжатие LZ77
- Резюме11
- Алгоритм считывания-записи
- Алгоритм производителей-потребителей
- Модель с одним производителем и одним потребителем
- Модель с одним производителем и несколькими потребителями
- Поиск различий между двумя файлами
- Вычисление LCS двух строк
- Вычисление LCS двух файлов
- Резюме12
- Эпилог
- Список литературы
| 2011 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 2010 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 2009 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 2008 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 2007 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 2006 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 2005 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 2004 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 2003 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 2002 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 2001 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 2000 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 1999 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
- Компания по разработке программного обеспечения
- Услуги аутсорсинга в области программирования
- Как продлить срок службы картриджей
- Мошенничество во Всемирной Паутине. Осторожно: фишинг!
- Web-студия
- Как легально поднять уровень индекса цитирования.
- Мы реально сможем помочь вам в управлении предприятием
- Создание сайтов – популяризация вашего замысла
- Свой сайт. Управление ресурсом
- Семантическое ядро сайта или правила подбора ключевых фраз
- Программирование в среде Delphi 8 for .NET
- Практикум по Delphi для решения прикладных задач
- Фундаментальные алгоритмы и структуры данных в Delphi
- Delphi 6. Программирование на Object Pascal
- Delphi и технология COM
- Delphi в шутку и всерьез: что умеют хакеры
- Программирование в Delphi глазами хакера
- Delphi 2005. Секреты программирования
- Искусство создания компонентов Delphi
- Приемы программирования в Delphi на основе VCL
- Программирование баз данных в Delphi 7
- Программирование баз данных в Delphi
- Программирование в среде Delphi
- Программирование в Delphi 7
- Язык SQL в Delphi 5