
- •Основные понятия структур
- •Концепция типа данных, простейшие типы данных, стандартные типы данных, органические типы (диапазоны)
- •Статические и полустатические структуры данных
- •2. 1. Массив.
- •2. 2. Запись, записи с вариантами.
- •2. 3. Стек.
- •5. Очередь
- •2. 7. Отображение
- •Динамические структуры данных
- •3.1. Односвязные списки, кольцевой список
- •3. 2. Двусвязный список, кольцевой двусвязный список
- •4. Рекурсивные алгоритмы
- •4. 1. Деревья, бинарные деревья, представление деревьев
- •4. 2. Основные операторы, используемые для работы с деревьями
- •4. 3. Алгоритм создания дерева бинарного поиска
- •4. 4. Прохождение бинарных деревьев
- •1. Прохождение в прямом порядке
- •3. Прохождение в обратном порядке
- •4. 5. Когда рекурсию использовать не нужно
- •4. 6. Рекурсивные программы, примеры
- •5. Поиск
- •5. 1. Линейный поиск
- •5. 2. Двоичный поиск
- •5. 3. Индексно-последовательный поиск
- •5. 3. Поиск в таблице
- •5. 4. Поиск прямой строки
- •Поиск по бинарному дереву
- •Алгоритм кнута, Морриса и Пратта
- •5. 6. Алгоритм Боуера и Мура
- •Сортировка. Необходимые определения и классификация сортировок. Сортировки прямого включения и выбора. Их эффективность Необходимые определения и классификация сортировок.
- •Сортировка методом прямого включения
- •Эффективность алгоритма сортировки прямого включения
- •Сортировка методом прямого выбора
- •Эффективность алгоритма сортировки прямого выбора
- •Сортировка прямого обмена. Её эффективность
- •Эффективность алгоритма сортировки прямого обмена
- •Улучшенные методы сортировки. Быстрая сортировка. Её эффективность.
- •Быстрая сортировка
- •Принцип работы быстрой сортировки
- •Пример работы быстрой сортировки
- •Блок-схема быстрой сортировки
- •Улучшенные методы сортировки. Сортировка шелла. Её эффективность. Сортировка шелла
- •Принцип работы сортировки шелла и необходимые расчёты для её реализации
- •Пример расчёта последовательности расстояний для малых массивов
- •Пример работы сортировки шелла
- •Принцип работы пирамидальной сортировки
- •Пример работы пирамидальной сортировки
- •Представление графов
- •Нахождение кратчайших путей между парами вершин
Эффективность алгоритма сортировки прямого включения
Минимальные оценки встречаются в случае упорядоченной исходной последовательности элементов, наихудшие же оценки имеют место, когда элементы первоначально расположены в обратном порядке. В некотором смысле сортировка с помощью включения демонстрирует истинно естественное поведение. Ясно, что приведенный алгоритм описывает процесс устойчивой сортировки, так как порядок элементов с равными ключами при нем остается неизменным.
Так, например, если последовательность уже отсортирована в нужном порядке, то максимальное число сравнений, которое может возникнуть на одном i- м шаге, cmax=i-1, а минимальное – это cmin=1. Если равновероятны все перестановки, то среднее число сравнений cср=i/2. Число перестановок в данной сортировке mi=ci+3 (включая барьер).
Если же массив отсортирован в обратном порядке от заданного, то это худший случай. Число сравнений будет равно сmax=n(n-1)/2, т. Е. – о(n2). Количество перестановок mmax=cmax +3(n-1), т.е. – о(n2).
Сортировка методом прямого выбора
В этом методе так же присутствуют две последовательности готовая и исходная, первая из которых на каждом шаге увеличивается на один элемент, а вторая уменьшается на один элемент. Отличие состоит в том, что вставляемый элемент в готовую последовательность помещается в её конец, при этом он не сравнивается с другими элементами готовой последовательности. Это возможно за счёт того, что среди элементов исходной последовательности выбирают каждый раз наименьший элемент (если сортируют данные по возрастанию) из всех. Минимальный элемент на i-м шаге будет больше минимального элемента шага i-1, который был найден на предыдущем шаг, поэтому его можно смело располагать в конец готовой последовательности. Найденный минимальный элемент меняется местами с первым элементом исходной последовательности, после чего исходная последовательность уменьшается на один элемент.
Отсортируем методом прямого выбора (табл. 11.2) последовательность элементов: 10, 3, 11, 8, 2, 15, 44, 9 по возрастанию.
Таблица 11.2
Принцип работы сортировки прямым выбором
Шаг |
Готовая последовательность |
Исходная последовательность |
1 |
2 |
10, 3, 11, 8, 15, 44, 9 |
2 |
2, 3 |
10, 11, 8, 15, 44, 9 |
3 |
2, 3, 8 |
10, 11, 15, 44, 9 |
4 |
2, 3, 8, 9 |
10, 11, 15, 44 |
5 |
2, 3, 8, 9, 10 |
11, 15, 44 |
6 |
2, 3, 8, 9, 10, 11 |
15, 44 |
7 |
2, 3, 8, 9, 10, 11, 15 |
44 |
8 |
2, 3, 8, 9, 10, 11, 15, 44 |
|
Блок схема для данного алгоритма приведена ниже (рис. 11.3).
Эффективность алгоритма сортировки прямого выбора
Число сравнений ключей c не зависит от начального порядка ключей, так что поведение этого метода менее естественно, чем поведение прямого включения. При любом расположении ключей c=n(n-1)/2, а порядок числа сравнений, таким образом, о(n2). Число перестановок минимально мmin=3(n-1) в случае изначально упорядоченных ключей и максимально, мmax=3(n-1)+с, если первоначально ключи располагались в обратном порядке, порядок о(n2). В худшем случае сортировка прямым выбором дает порядок n2, как для числа сравнений, так и для числа перемещений.