- •СОДЕРЖАНИЕ
- •ВВЕДЕНИЕ
- •1.1. Теоретические сведения
- •1.2. Порядок выполнения работы
- •1.3. Содержание отчета
- •1.4. Контрольные вопросы
- •2.1. Теоретические сведения
- •2.2. Порядок выполнения работы
- •2.3. Содержание отчета
- •2.4. Контрольные вопросы
- •2.5. Варианты заданий
- •3.1. Теоретические сведения
- •3.2. Порядок выполнения работы
- •3.3. Содержание отчета
- •3.4. Контрольные вопросы
- •4.1. Теоретические сведения
- •4.1.1. Процедуры
- •4.1.2. Функции
- •4.2. Порядок выполнения работы
- •4.3. Содержание отчета
- •4.4. Контрольные вопросы
- •4.5. Варианты заданий
- •5.1. Теоретические сведения. Работа с компонентами
- •5.2. Порядок выполнения работы
- •5.3. Содержание отчета
- •5.4. Контрольные вопросы
- •5.5. Варианты заданий
- •6.1. Теоретические сведения. Работа с компонентами
- •6.2. Порядок выполнения работы
- •6.3. Содержание отчета
- •6.4. Контрольные вопросы
- •6.5. Варианты заданий
- •7.1. Теоретические сведения
- •7.2. Порядок выполнения работы
- •7.3. Содержание отчета
- •7.4. Контрольные вопросы
- •7.5. Варианты заданий
- •8.1. Теоретические сведения
- •8.2. Работа с компонентами
- •8.3. Порядок выполнения работы
- •8.4. Содержание отчета
- •8.5. Контрольные вопросы
- •8.6. Варианты заданий
- •9.1. Теоретические сведения
- •9.1.1. Методы сортировки
- •9.2. Сортировки обменом
- •9.2.1. Сортировка простым обменом (метод пузырька)
- •9.2.2. Сортировка простым обменом с флагом
- •9.2.3. Сортировка простым обменом с границей
- •9.2.4. Шейкер-сортировка
- •9.2.5. Быстрая сортировка
- •9.3. Сортировки включениями
- •9.3.1. Сортировка простым включением
- •9.3.2. Сортировка бинарными вставками
- •9.3.3. Сортировка Шелла
- •9.4. Сортировки выбором
- •9.4.1. Сортировка простым выбором
- •9.4.2. Пирамидальная сортировка
- •9.5. Сравнительный анализ сортировок
- •9.6. Контрольные вопросы
- •Приложения
- •Приложение А
- •Приложение Б
- •Приложение В
- •Приложение Г
- •ЛИТЕРАТУРА
обменяем ai и aj . Продолжаем просмотр далее от позиции i+1 до j-1. Выполняем такой поиск до тех пор, пока два просмотра не встретятся.
Пример
Пусть в следующем примере: 55, 12, 42, 94, 06, 18, 44, 67 опорный элемент равен 42. Получим такую последовательность перемещений:
•55, 12, 42, 94, 06, 18, 44, 67;
•18, 12, 42, 94, 06, 55, 44, 67;
•18, 12, 06 | 94, 42, 55, 44, 67.
Дальше просмотр слева направо заканчивается на элементе 94, а справа налево на элементе 6. Они не обмениваются. Получили две части последовательности:
•в одной числа меньшие, чем x;
•во второй числа не меньшие, чем x.
Поделив массив опорным элементом на две части, нужно сделать то же самое с каждой из них, а затем с частями этих частей и т.д., пока каждая часть не будет содержать только один элемент.
9.3.Сортировки включениями
9.3.1.Сортировка простым включением
Идея: элементы условно разделяются на готовую последовательность a1, a2 , ..., ai −1 и входящую последовательность ai ,..., an . На каждом шаге, начиная с i=2,3,…, берут ai и вставляют его на подходящее место в готовую последовательность.
Готовая последовательность a1, a2 , ..., ai −1 упорядочена в порядке роста.
Элемент x нужно вставить в нее, не нарушая порядок, например, «просеять». Заметим, что «просеивание» может закончиться при двух условиях:
• найден элемент a j такой, что a j < x ≤ a j+1 , 1 ≤ j ≤ i −1;
• достигли левого конца готовой последовательности.
135
Когда становится ясно, куда нужно вставить элемент x, нужно освободить для него место, перемещая элементы a j+1,..., ai−1 на шаг вправо. Отметим, что это перемещение можно выполнять сразу при сравнении.
9.3.2. Сортировка бинарными вставками
Идея: можно получить улучшение предыдущего алгоритма, если поиск места вставки элемента x проводить бинарными делениями.
9.3.3. Сортировка Шелла
Следующий алгоритм представляет собой сортировку включениями с уменьшающимся приращением.
Идея: Сначала отдельно группируются и сортируются все элементы, которые отстоят один от другого на 4 позиции. Это четвертная сортировка (выполняем, пока не упорядочим). Дальше – двоичная сортировка (сортируются элементы, которые отстоят на дистанции 2; выполняем до упорядочения). На последнем проходе – обычная сортировка (одинарная).
На первый взгляд добавились 2 лишних шага (четвертная и двоичная сортировки), однако на каждом этапе либо сортируется относительно мало элементов, либо элементы уже довольно хорошо упорядочены.
Пример
Над следующим массивом выполним четвертную сортировку:
•44, 55, 12, 42, 94, 18, 06, 67.
Результатом будет такой массив:
•44, 18, 06, 42, 94, 55, 12, 67.
Выполним двоичную сортировку и получим следующий массив:
• 06, 18, 12, 42, 44, 55, 94, 67.
Выполним одинарную сортировку и получим полностью отсортированный массив:
• 06, 12, 18, 42, 44, 55 67, 94.
Заметим, что продвижение «легкого» элемента вперед идет довольно быстрыми темпами.
136
