Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмы и структуры данных.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.14 Mб
Скачать

117

ОГЛАВЛЕНИЕ

Стр.

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) элементов. Ключ может быть любого типа, лишь бы на этом типе можно было определить отношение порядка.