
- •3. Алгоритмы сортировки
- •3.1. Сортировка массивов
- •3.1.1. Сортировка простыми включениями
- •3.1.2. Сортировка бинарными включениями (модифицированная сортировка простыми включениями)
- •3.1.3. Сортировка простым выбором
- •3.1.4. Сортировка простым обменом (метод пузырька)
- •3.1.5. Метод предсортировки и слияния
- •3.1.6. Метод максимумов
- •3.1.7. Шейкер1-сортировка
- •3.1.8. Сортировка включениями с убывающим приращением (сортировка Шелла)
- •3.1.9. Сортировка с помощью дерева
- •3.1.10. Пирамидальная сортировка
- •3.1.11. Быстрая сортировка (метод Хоора)
- •3.1.12. Цифровая распределяющая сортировка
- •3.2. Сортировка последовательных файлов
- •3.2.1. Простое слияние
- •3.2.2. Естественное слияние
- •3.2.3. Сбалансированное многопутевое слияние
- •3.2.4. Многофазная сортировка
- •3.3. Анализ алгоритмов
- •2. Некоторые элементы находятся не на своём месте
- •1 3 4 5 2
- •5 4 3 2 1
3.2.3. Сбалансированное многопутевое слияние
Имеется равное число входных и выходных файлов, в которые поочередно распределяются следующие одна за другой упорядоченные подпоследовательности, т.е. входные и выходные файлы меняются ролями после каждого отдельного прохода.
Достоинство: уменьшение числа проходов.
3.2.4. Многофазная сортировка
Этот метод был изобретён Р.Л. Гилстадом.
В каждый момент элементы сливаются из нескольких файлов в один. Как только один из входных файлов окажется исчерпанным, он становится выходным файлом для слияния из того файла, который ещё не исчерпан, и из тех, которые до этого были входными.
Рассмотрим пример, изображенный на рис. 3.15. Вначале два входных файла f1,f2 содержат соответственно 13 и 8 упорядоченных подпоследовательностей. На первом «проходе» 8 подпоследовательностей сливаются сf1 иf2 вf3, на втором «проходе» оставшиеся 5 подпоследовательностей сливаются сf3 иf1 вf2 и т. д. В конце работы в файлеf1 содержится отсортированная последовательность.
Достоинство: более эффективен, чем сбалансированная сортировка.
Рис. 3.15. Многофазная сортировка слиянием с тремя файлами, содержащими 21 упорядоченную подпоследовательность
3.3. Анализ алгоритмов
Основное требование к методам сортировки массивов – экономное использование памяти. Это означает, что переупорядочивание элементов нужно выполнять на том же месте. Таки образом, выбирая метод сортировки, руководствуются критерием эффективности. Удобная мера эффективности получается при подсчете числа необходимых сравнений и (или) пересылок элементов.
Рассмотрим наглядный пример исследования алгоритма на основе сортировки выбором.
Пусть нам дан одномерный массив с цифрами 1 2 3 4 5
a1a2a3a4a5
Рассмотрим несколько вариантов сортировок :
1. Все элементы упорядочены (лучший случай)
Сравниваем элементы с первым начиная со второго :
А2>A1 A2:=a2; 12345 шаг 1 действий 4
A3>a2 A3:=a3; 12345
A4>a3 A4:=a4; 12345
A5>a4 A5:=a5; 12345
Итого шаг 1 действий 4.
Сортировка не требуется .
2. Некоторые элементы находятся не на своём месте
1 3 4 5 2
A2>a1 A2:=a2; 13452 шаг 1 действий 3
A3>a2 A3:=A3; 13452
A4>a3 A4:=a4 13452
A5<a4 a5:=a4; 13425 шаг 2 действий 4
A4<a3 a4:=a3; 13245
A3<a2 A2:=a3; 12345
A2>a1 a2:=a2; 12345
Итого шагов 2, действий 7.
3. Все элементы находятся не на своём месте(худший случай)
5 4 3 2 1
A2<a1 a2:=a1; 45321 шаг 1 действий 1
A3<a2 a3:=a2; 43521 шаг 2 действий 2
A2<a1 a2:=a1; 34521
A4<a3 a3:=a4; 34251 шаг 3 действий 3
A3<a2 a2:=a3; 32451
A2<a1 a2:=a1; 23451
A5<a4 a4:=a5; 23415 шаг 4 действий 4
A4<a3 a3:=a4; 23145
A3<a2 a2:=a3; 21345
A2<a1 a2:=a1; 12345
Итого шагов 4, действий 10.
1шейкер – прибор, в котором встряхиванием вверх-вниз готовят коктейль.