VB, MS Access, VC++, Delphi, Builder C++

Файл : groupNew.doc (размер : 2,070,528 байт)

8Введение

Целевая аудитория10

Глава 1. Основные понятия15

Что такое алгоритмы?15

Анализ скорости выполнения алгоритмов16

Пространство — время17

Оценка с точностью до порядка17

Поиск сложных частей алгоритма19

Сложность рекурсивных алгоритмов20

Многократная рекурсия21

Косвенная рекурсия22

Требования рекурсивных алгоритмов к объему памяти22

Наихудший и усредненный случай23

Часто встречающиеся функции оценки порядка сложности24

Логарифмы25

Реальные условия — насколько быстро?25

Обращение к файлу подкачки26

Псевдоуказатели, ссылки на объекты и коллекции27

Резюме29

Глава 2. Списки30

Знакомство со списками31

Простые списки31

Коллекции32

Список переменного размера33

Класс SimpleList36

Неупорядоченные списки37

Связные списки41

Добавление элементов к связному списку43

Удаление элементов из связного списка44

Уничтожение связного списка44

Сигнальные метки45

Инкапсуляция связных списков46

Доступ к ячейкам47

Разновидности связных списков49

Циклические связные списки49

Проблема циклических ссылок50

Двусвязные списки50

Потоки53

Другие связные структуры56

Псевдоуказатели56

Резюме59

Глава 3. Стеки и очереди60

Стеки60

Множественные стеки62

Очереди63

Циклические очереди65

Очереди на основе связных списков69

Применение коллекций в качестве очередей70

Приоритетные очереди70

Многопоточные очереди72

Резюме74

Глава 4. Массивы75

Треугольные массивы75

Диагональные элементы77

Нерегулярные массивы78

Прямая звезда78

Нерегулярные связные списки79

Разреженные массивы80

Индексирование массива82

Очень разреженные массивы85

Резюме86

Глава 5. Рекурсия86

Что такое рекурсия?87

Рекурсивное вычисление факториалов88

Анализ времени выполнения программы89

Рекурсивное вычисление наибольшего общего делителя90

Анализ времени выполнения программы91

Рекурсивное вычисление чисел Фибоначчи92

Анализ времени выполнения программы93

Рекурсивное построение кривых Гильберта94

Анализ времени выполнения программы96

Рекурсивное построение кривых Серпинского98

Анализ времени выполнения программы100

Опасности рекурсии101

Бесконечная рекурсия101

Потери памяти102

Необоснованное применение рекурсии103

Когда нужно использовать рекурсию104

Хвостовая рекурсия105

Нерекурсивное вычисление чисел Фибоначчи107

Устранение рекурсии в общем случае110

Нерекурсивное построение кривых Гильберта114

Нерекурсивное построение кривых Серпинского117

Резюме121

Глава 6. Деревья121

Определения122

Представления деревьев123

Полные узлы123

Списки потомков124

Представление нумерацией связей126

Полные деревья129

Обход дерева130

Упорядоченные деревья135

Добавление элементов135

Удаление элементов136

Обход упорядоченных деревьев139

Деревья со ссылками141

Работа с деревьями со ссылками144

Квадродеревья145

Изменение MAX_PER_NODE151

Использование псевдоуказателей в квадродеревьях151

Восьмеричные деревья152

Резюме152

Глава 7. Сбалансированные деревья153

Сбалансированность дерева153

АВЛ‑деревья154

Удаление узла из АВЛ‑дерева161

Б‑деревья166

Производительность Б‑деревьев167

Вставка элементов в Б‑дерево167

Удаление элементов из Б‑дерева168

Разновидности Б‑деревьев169

Улучшение производительности Б‑деревьев171

Балансировка для устранения разбиения блоков171

Вопросы, связанные с обращением к диску173

База данных на основе Б+дерева176

Резюме179

Глава 8. Деревья решений179

Поиск в деревьях игры180

Минимаксный поиск181

Улучшение поиска в дереве игры185

Поиск в других деревьях решений187

Метод ветвей и границ187

Эвристики191

Другие сложные задачи207

Задача о выполнимости207

Задача о разбиении208