- •Основные понятия структур
- •Концепция типа данных, простейшие типы данных, стандартные типы данных, органические типы (диапазоны)
- •Статические и полустатические структуры данных
- •2. 1. Массив.
- •2. 2. Запись, записи с вариантами.
- •2. 3. Стек.
- •5. Очередь
- •3.1. Односвязные списки, кольцевой список
- •2. 7. Отображение
- •Динамические структуры данных
- •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. Алгоритм Боуера и Мура
- •Сортировка. Необходимые определения и классификация сортировок. Сортировки прямого включения и выбора. Их эффективность Необходимые определения и классификация сортировок.
- •Сортировка методом прямого включения
- •Эффективность алгоритма сортировки прямого включения
- •Сортировка методом прямого выбора
- •Эффективность алгоритма сортировки прямого выбора
- •Сортировка прямого обмена. Её эффективность
- •Эффективность алгоритма сортировки прямого обмена
- •Улучшенные методы сортировки. Быстрая сортировка. Её эффективность.
- •Быстрая сортировка
- •Принцип работы быстрой сортировки
- •Пример работы быстрой сортировки
- •Блок-схема быстрой сортировки
- •Улучшенные методы сортировки. Сортировка шелла. Её эффективность. Сортировка шелла
- •Принцип работы сортировки шелла и необходимые расчёты для её реализации
- •Пример расчёта последовательности расстояний для малых массивов
- •Пример работы сортировки шелла
- •Принцип работы пирамидальной сортировки
- •Пример работы пирамидальной сортировки
- •Представление графов
- •Нахождение кратчайших путей между парами вершин
Сортировка прямого обмена. Её эффективность
Оба разбиравшихся до этого метода можно тоже рассматривать как «обменные» сортировки. В данном же методе обмен местами двух элементов представляет собой характерную особенность процесса. Изложенный ниже алгоритм прямого обмена основывается на сравнении и смене мест для пары соседних элементов и продолжении этого процесса до тех пор, пока не будут упорядочены все элементы.
Как и в упоминавшемся методе прямого выбора, мы повторяем проходы по массиву, сдвигая каждый раз наименьший элемент оставшейся последовательности к левому концу массива. Если мы будем рассматривать массивы как вертикальные, а не горизонтальные построения, то элементы можно интерпретировать как пузырьки в чане с водой, причем вес каждого соответствует его ключу. В этом случае при каждом проходе один пузырек как бы поднимается до уровня, соответствующего его весу. Метод широко известен под названием «пузырьковая сортировка».
Отсортируем по возрастанию методом прямого обмена (табл. 12.1) последовательность элементов: 10, 3, 11, 8, 2, 15, 44, 9.
Таблица 12.1
Принцип работы сортировки прямым выбором
Шаг |
Готовая последовательность |
Исходная последовательность |
|
10, 3, 11, 8, 2, 15, 44, 9 |
Перестановка 44 и 9 |
1 |
10, 3, 11, 8, 2, 15, 9, 44 |
Перестановка 15 и 9 |
2 |
10, 3, 11, 8, 2, 9, 15, 44 |
Перестановка 8 и 2 |
3 |
10, 3, 11, 2, 8, 9, 15, 44 |
Перестановка 11 и 2 |
4 |
10, 3, 2, 11, 8, 9, 15, 44 |
Перестановка 3 и 2 |
5 |
10, 2, 3, 11, 8, 9, 15, 44 |
Перестановка 10 и 2 |
6 |
2, 10, 3, 11, 8, 9, 15, 44 |
Перестановка 11 и 8 |
7 |
2, 10, 3, 8, 11, 9, 15, 44 |
Перестановка 10 и 3 |
8 |
2, 3, 10, 8, 11, 9, 15, 44 |
Перестановка 11 и 9 |
9 |
2, 3, 10, 8, 9, 11, 15, 44 |
Перестановка 10 и 8 |
10 |
2, 3, 8, 10, 9, 11, 15, 44 |
Готово |
Реализовать данный алгоритм можно простым способом (рис. 12.1), где присутствует большое число проходов «вхолостую».
Так же можно реализовать с использованием флага (рис. 12.2), который позволяет сэкономить на числе пустых проходов по массиву и числе сравнения соседних элементов. Чтобы лишний раз не переставлять элементы, можно ввести флажок b, который остается в значении false , если при очередном проходе не будет произведено ни одного обмена. Добавления можно проанализировать, сравнив блок-схемы (рис. 12.1 и 12.2).
Если внести ещё одно изменение в алгоритм сортировки обметом, то получится шейкерная сортировка. Для этого необходимо после каждого прохода меняют направление во внутреннем цикле.
