
- •1Введение
- •2Сортировки
- •2.1Сортировки массивов
- •2.2Сортировка простым включением
- •2.3Сортировка простым выбором
- •2.4Сортировка простым обменом
- •2.5Сравнение простых сортировок
- •2.6 Сортировка шелла
- •2.7Пирамидальная сортировка
- •2.8Быстрая сортировка
- •2.9Поиск медианы и квантилей
- •2.10Сравнение сортировок
- •3Поиск подстроки в строке
- •3.1Поиск в строке
- •3.2Простой поиск в строке
- •3.3Поиск в строке. Алгоритм боуера-мура
- •4Генерация перестановок
- •4.1Генерация перестановок последовательности натуральных чисел
- •4.2Генерация перестановок элементов в антилексикографическом порядке
- •4.3Генерация перестановок за одну транспозицию элементов
- •4.4Генерация перестановок за одну транспозицию соседних элементов
- •5Генерация подмножеств
- •5.1Генерация всех подмножеств множества
- •5.2Генерация m -элементных подмножеств множества натуральных чисел
- •Var m: integer; {Размер подмножества}
- •Var I, j, p: integer;
- •5.3Генрация k-компонентных выборок на множестве {0, 1}
- •Var k: integer; {Количество нулей в кортеже}
- •I: integer;
- •Var I, j, p: integer;
- •If Finish then Break {Exit};
- •6Генерация разбиений
- •6.1Разбиение целых чисел
- •Var I, j: integer;
- •Var j: integer;
- •Var I, j, k: integer;
- •Var d, l, Sum: integer;
- •6.2Разбиение множеств
- •/1, 2, 3/ И /4/ затем /1, 2/ и /3, 4/ и т.Д. }
- •I, j, k, r, s: integer;
- •If not Flag2 then
- •If Flag1 then
- •If Forvd[j] then { j движется вперед}
- •7Обходы бинарных деревьев
- •7.1Процедуры прохождения бинарных деревьев
- •8Поиск на бинарных деревьях
- •8.1Процедуры поиска на бинарных деревьях
- •Рекомендованная литература
ОГЛАВЛЕНИЕ
Стр.
1 ВВЕДЕНИЕ 4
2 СОРТИРОВКИ 5
2.1 СОРТИРОВКИ МАССИВОВ 5
2.2 СОРТИРОВКА ПРОСТЫМ ВКЛЮЧЕНИЕМ 6
2.3 СОРТИРОВКА ПРОСТЫМ ВЫБОРОМ 10
2.4 СОРТИРОВКА ПРОСТЫМ ОБМЕНОМ 12
2.5 СРАВНЕНИЕ ПРОСТЫХ СОРТИРОВОК 18
2.6 СОРТИРОВКА ШЕЛЛА 19
2.7 ПИРАМИДАЛЬНАЯ СОРТИРОВКА 23
2.8 БЫСТРАЯ СОРТИРОВКА 34
2.9 ПОИСК МЕДИАНЫ И КВАНТИЛЕЙ 41
2.10 СРАВНЕНИЕ СОРТИРОВОК 43
3 ПОИСК ПОДСТРОКИ В СТРОКЕ 45
3.1 ПОИСК В СТРОКЕ 45
3.2 ПРОСТОЙ ПОИСК В СТРОКЕ 46
3.3 ПОИСК В СТРОКЕ. АЛГОРИТМ БОУЕРА-МУРА 48
4 ГЕНЕРАЦИЯ ПЕРЕСТАНОВОК 55
4.1 ГЕНЕРАЦИЯ ПЕРЕСТАНОВОК ПОСЛЕДОВАТЕЛЬНОСТИ НАТУРАЛЬНЫХ ЧИСЕЛ 55
4.2 ГЕНЕРАЦИЯ ПЕРЕСТАНОВОК ЭЛЕМЕНТОВ В АНТИЛЕКСИКОГРАФИЧЕСКОМ ПОРЯДКЕ 57
4.3 ГЕНЕРАЦИЯ ПЕРЕСТАНОВОК ЗА ОДНУ ТРАНСПОЗИЦИЮ ЭЛЕМЕНТОВ 63
4.4 ГЕНЕРАЦИЯ ПЕРЕСТАНОВОК ЗА ОДНУ ТРАНСПОЗИЦИЮ СОСЕДНИХ ЭЛЕМЕНТОВ 67
5 ГЕНЕРАЦИЯ ПОДМНОЖЕСТВ 75
5.1 ГЕНЕРАЦИЯ ВСЕХ ПОДМНОЖЕСТВ МНОЖЕСТВА 76
5.2 ГЕНЕРАЦИЯ m -ЭЛЕМЕНТНЫХ ПОДМНОЖЕСТВ МНОЖЕСТВА НАТУРАЛЬНЫХ ЧИСЕЛ 78
5.3 ГЕНРАЦИЯ k-КОМПОНЕНТНЫХ ВЫБОРОК НА МНОЖЕСТВЕ {0, 1} 81
6 ГЕНЕРАЦИЯ РАЗБИЕНИЙ 85
6.1 РАЗБИЕНИЕ ЦЕЛЫХ ЧИСЕЛ 85
6.2 РАЗБИЕНИЕ МНОЖЕСТВ 91
7 ОБХОДЫ БИНАРНЫХ ДЕРЕВЬЕВ 103
7.1 ПРОЦЕДУРЫ ПРОХОЖДЕНИЯ БИНАРНЫХ ДЕРЕВЬЕВ 104
8 ПОИСК НА БИНАРНЫХ ДЕРЕВЬЯХ 109
8.1 ПРОЦЕДУРЫ ПОИСКА НА БИНАРНЫХ ДЕРЕВЬЯХ 110
РЕКОМЕНДОВАННАЯ ЛИТЕРАТУРА 117
1Введение
Исторически вычислительные машины появились как средство резкого ускорения при проведении сложных расчетов в научной и инженерной деятельности. Однако на сегодня эти задачи перестали быть господствующими при использовании компьютерной техники и составляют по разным оценкам от 3% до 5% общих затрат машинного времени.
На сегодня на передний план вышла способность компьютеров хранить и обеспечивать быстрый доступ и обработку больших объемов данных, что связано с использованием компьютера для моделирования и решения задач в различных предметных (проблемных) областях человеческой деятельности. Компьютерная техника стала центральным звеном систем обработки данных.
Решение задач обработки данных достигается применением определенных средств организации (представления) данных в памяти компьютера, а также созданием специальных средств доступа и обработки этих данных.
Выбор способов представления данных является достаточно сложной и не всегда однозначной задачей. Увеличение объема данных или расширение круга решаемых задач в рамках одной и той же предметной области могут по-новому поставить и задачи представления данных. Иными словами, невозможно принимать решение о том как представлять данные, не зная какие алгоритмы обработки данных будут применяться к этим данным, и наоборот, выбор применяемых алгоритмов очень часто зависит от строения данных, к которым они применяются.
Представление данных в памяти компьютера реализуется в виде различных структур данных. При этом различаются базовые структуры данных, которые предоставляются конкретными языками программирования, и более сложные – конструируемые структуры данных, которые создаются на основе базовых структур данных и отличаются способностью перестраиваться в процессе решения конкретных задач.
Базовые структуры данных легко (непосредственно) реализуются в современных компьютерах. Они сопровождаются фиксированным набором операций по организации доступа и обработки элементов этих структур.
Конструируемые структуры данных также сопровождаются набором операций по доступу и обработке их элементов. Однако этот набор формируется в зависимости от структуры данных и состава решаемых задач.
Фактически пользователям различных систем обработки данных сегодня предоставляется единый комплекс из способов организации данных и средств (методов) по обработке этих данных, что повлекло за собой появление одного из фундаментальных понятий современного программирования – тип данных. В зависимости от состава структур данных и операций по работе с этими данными различают базовые и абстрактные типы данных.
2Сортировки
Под сортировкой понимают процесс перестановки объектов данного множества в определенном порядке.
Цель сортировки - облегчить последующий поиск элементов в отсортированном множестве.
Сортировки являются идеальным примером огромного разнообразия алгоритмов, выполняющих одну и ту же задачу, многие из которых являются в некотором смысле оптимальными, и большинство имеют некоторые преимущества перед остальными. Сортировки являются весомым аргументом в пользу сравнительного анализа алгоритмов.
Сортировки также являются хорошим примером того, как при помощи усложнения алгоритмов можно добиться значительного увеличения эффективности по сравнению с более простыми и очевидными алгоритмами.
Различают сортировки массивов и файлов.
Мы рассматриваем здесь только сортировки массивов.
Введем тип данных Item (элемент):
type
Item = record
Key : integer;
{другие поля записи}
end
Сортировка ведется относительно ключей (Key) элементов. Ключ может быть любого типа, лишь бы на этом типе можно было определить отношение порядка.