- •ОЗВУЧЕННАЯ ПРЕЗЕНТАЦИЯ
- •ТЕМА 5
- •Алгоритм турнирной сортировки основан на повторяющихся поисках наименьшего ключа среди n элементов, среди
- •Второй этап сортировки - спуск вдоль пути, отмеченного наименьшим элементом, и исключение его
- •Элемент, передвинувшийся в корень дерева, вновь будет наименьшим (теперь уже вторым) ключом
- •Пример. Выполнить турнирную сортировку множества: {a1,a2,a3,a4,a5,a6,a7,a8}.
- •Найденный минимальный элемент заменяется на специальный символ М, помещаемый в результирующее множество.
- •АЛГОРИТМ ПИРАМИДАЛЬНОЙ СОРТИРОВКИ.
- ••42 сравнили с 67 и поменяли местами: 44 55 12 // 67 94
- ••Берем верхний элемент пирамиды a[0]...a[n] (первый в массиве) и меняем с последним местами.
- ••Построение пирамиды занимает O(n log n) операций, причем более точная оценка дает даже
- •АЛГОРИТМ ХОАРА БЫСТРОЙ СОРТИРОВКИ (QUICK SORT)
- ••Алгоритм называется вероятностным, если он использует генератор случайных чисел.
- •БЛУЖДАЮЩАЯ СОРТИРОВКА
- •СОРТИРОВКИ ПРОСТЫМ СЛИЯНИЕМ
- ••После выполнения i проходов получаем два файла, состоящих из серий длины 2i. Окончание
- •Для выполнения внешней сортировки методом простого слияния в
- •ЕСТЕСТВЕННОЕ СЛИЯНИЕ
- ••Как и в случае прямого слияния, сортировка выполняется за несколько шагов, в каждом
- ••Число чтений/перезаписей файлов при использовании этого метода будет не хуже, чем при применении
- •МНОГОФАЗНАЯ СОРТИРОВКА
- ••Идея многофазной сортировки состоит в том, что из имеющихся m вспомогательных файлов (m-1)
- ••Предположим, например, что используется три файла B1, B2 и B3, и при начальном
- •Пример начального распределения серий, при котором трехфазная внешняя сортировка не приводит к нужному
- ••Опять для определенности остановимся на первом варианте.
- ••Аналогичные (хотя и более громоздкие) рассуждения
- •При использовании шести вспомогательных файлов идеальными распределениями серий являются следующие:
- •МНОГОФАЗНАЯ СОРТИРОВКА СЛИЯНИЕМ
- •ПРИМЕР МНОГОФАЗНОЙ СОРТИРОВКИ
- •ПРИМЕР МНОГОФАЗНОЙ СОРТИРОВКИ
- •МНОГОФАЗНАЯ СОРТИРОВКА ПРИ СБАЛАНСИРОВАННОМ РАСПРЕДЕЛЕНИИ
- •ИДЕАЛЬНОЕ КОЛИЧЕСТВО СЕРИЙ ПРИ ТРЕХ ВСПОМОГАТЕЛЬНЫХ
- •ИДЕАЛЬНОЕ КОЛИЧЕСТВО СЕРИЙ ПРИ
- •ИДЕАЛЬНОЕ КОЛИЧЕСТВО СЕРИЙ ПРИ
- •ИДЕАЛЬНОЕ КОЛИЧЕСТВО СЕРИЙ ПРИ ШЕСТИ ВСПОМОГАТЕЛЬНЫХ
- •ИДЕАЛЬНОЕ РАСПРЕДЕЛЕНИЕ СЕРИЙ И ЧИСЛА ФИБОНАЧЧИ
- •ИДЕАЛЬНОЕ РАСПРЕДЕЛЕНИЕ СЕРИЙ И ОБОБЩЕННЫЕ ЧИСЛА ФИБОНАЧЧИ
- •ФАКТИЧЕСКОЕ И ИДЕАЛЬНОЕ РАСПРЕДЕЛЕНИЕ СЕРИЙ
- •ПРИМЕНЕНИЕ МНОГОФАЗНОЙ СОРТИРОВКИ БЕЗ УЧЕТА ИДЕАЛЬНОГО РАСПРЕДЕЛЕНИЯ.
- •ПРИМЕНЕНИЕ МНОГОФАЗНОЙ СОРТИРОВКИ БЕЗ УЧЕТА ИДЕАЛЬНОГО РАСПРЕДЕЛЕНИЯ.
- •ПРИМЕНЕНИЕ МНОГОФАЗНОЙ СОРТИРОВКИ БЕЗ УЧЕТА ИДЕАЛЬНОГО РАСПРЕДЕЛЕНИЯ.
- •ЛИТЕРАТУРА
При использовании шести вспомогательных файлов идеальными распределениями серий являются следующие:
1 0 0 0 0
1 1 1 1 1
2 2 2 2 1
4 4 4 3 2
8 8 7 6 4
16 15 14 12 8 ........
•Понятно, что если распределение основано на числе Фибоначчи fi, то минимальное число серий во вспомогательных файлах будет равно fi, а максимальное - f(i+1). Поэтому после выполнения слияния мы получим максимальное число серий - fi, а минимальное - f(i-1). На каждом этапе будет выполняться максимально возможное число слияний, и процесс сойдется к наличию всего одной серии.
•Поскольку число серий в исходном файле может не обеспечивать возможность такого распределения серий, применяется метод добавления пустых серий, которые в дальнейшем как можно более равномерного распределяются между промежуточными файлами и опознаются при последующих слияниях. Понятно, что чем меньше таких пустых серий, т.е. чем ближе число начальных серий к требованиям Фибоначчи, тем более эффективно работает алгоритм.
МНОГОФАЗНАЯ СОРТИРОВКА СЛИЯНИЕМ
-допускает использование произвольного числа N вспомогательных последовательностей;
-при слиянии используется (N – 1) вспомогательная последовательность, при этом результат записывается в свободную (N-ю) последовательность;
-слияние производится до тех пор пока все последовательности не пусты (стратегия сливать до опустошения – merge-until-empty);
-Требует неравномерного распределения серий по вспомогательным последовательностям.
33
ПРИМЕР МНОГОФАЗНОЙ СОРТИРОВКИ |
|
|||
(3 ВСПОМОГАТЕЛЬНЫЕ |
|
|
||
ПОСЛЕДОВАТЕЛЬНОСТИ) |
a3 |
|
||
|
a1 |
a2 |
|
|
|
13 |
8 |
0 |
|
|
5 |
0 |
8 |
|
|
0 |
5 |
3 |
|
|
3 |
2 |
0 |
|
|
1 |
0 |
2 |
|
|
0 |
1 |
1 |
|
t |
1 |
0 |
0 |
|
* Указывается только количество серий в последовательности |
34 |
ПРИМЕР МНОГОФАЗНОЙ СОРТИРОВКИ |
|||||
|
(6 ВСПОМОГАТЕЛЬНЫХ |
||||
a1 |
ПОСЛЕДОВАТЕЛЬНОСТЕЙ) |
||||
a2 |
a3 |
a4 |
a5 |
a6 |
|
16 |
15 |
14 |
12 |
8 |
0 |
8 |
7 |
6 |
4 |
0 |
8 |
4 |
3 |
2 |
0 |
4 |
4 |
2 |
1 |
0 |
2 |
2 |
2 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
t |
* Указывается только количество серий в последовательности |
35 |
МНОГОФАЗНАЯ СОРТИРОВКА ПРИ СБАЛАНСИРОВАННОМ РАСПРЕДЕЛЕНИИ
Сбалансированное распределение серий!
t
a1 |
a2 |
a2 |
11 |
10 |
0 |
1 |
0 |
10 |
0 |
1 |
9 |
1 |
0 |
8 |
0 |
1 |
7 |
1 |
0 |
6 |
34
ИДЕАЛЬНОЕ КОЛИЧЕСТВО СЕРИЙ ПРИ ТРЕХ ВСПОМОГАТЕЛЬНЫХ
ПОСЛЕДОВАТЕЛЬНОСТЯХa1 a2 a3 Одна последовательность 13 8 0 пуста, поэтому количество
последовательностей – 2.
5 |
0 |
8 |
L |
a1(L) |
a2(L) |
Sum |
|
|
|
|
|||||
0 |
5 |
3 |
0 |
1 |
0 |
1 |
|
3 |
2 |
0 |
1 |
1 |
1 |
2 |
|
2 |
2 |
1 |
3 |
||||
|
|
|
|||||
1 |
0 |
2 |
3 |
3 |
2 |
5 |
|
0 |
1 |
1 |
4 |
5 |
3 |
8 |
|
5 |
8 |
5 |
13 |
||||
|
|
|
|||||
1 |
0 |
0 |
6 |
13 |
8 |
21 |
всегда
рабочих
t |
37 |
ИДЕАЛЬНОЕ КОЛИЧЕСТВО СЕРИЙ ПРИ |
|
||||||
ТРЕХ ВСПОМОГАТЕЛЬНЫХ |
|
|
|
|
|||
ПОСЛЕДОВАТЕЛЬНОСТЯХ |
|
последовательность всегда пуста, |
|||||
a1 |
a2 |
a3 |
Одна |
|
|||
13 |
8 |
0 |
поэтому |
|
количество |
рабочих |
|
последовательностей – 2. |
|
||||||
5 |
0 |
8 |
|
||||
L |
a1(L) |
a2(L) |
Sum |
|
|||
|
|
|
|
||||
0 |
5 |
3 |
0 |
1 |
0 |
1 |
|
3 |
2 |
0 |
1 |
1 |
1 |
2 |
|
2 |
2 |
1 |
3 |
|
|||
|
|
|
|
||||
1 |
0 |
2 |
3 |
3 |
2 |
5 |
|
0 |
1 |
1 |
4 |
5 |
3 |
8 |
|
5 |
8 |
5 |
13 |
|
|||
|
|
|
|
||||
1 |
0 |
0 |
6 |
13 |
8 |
21 |
|
38
ИДЕАЛЬНОЕ КОЛИЧЕСТВО СЕРИЙ ПРИ
ШЕСТИ ВСПОМОГАТЕЛЬНЫХ |
|
|
||||
ПОСЛЕДОВАТЕЛЬНОСТЯХ |
a4(L) |
a5(L) |
Sum |
|||
L |
a1(L) |
a2(L) |
a3(L) |
|||
0 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
5 |
2 |
2 |
2 |
2 |
2 |
1 |
9 |
3 |
4 |
4 |
4 |
3 |
2 |
17 |
4 |
8 |
8 |
7 |
6 |
4 |
33 |
5 |
16 |
15 |
14 |
12 |
8 |
65 |
6 |
31 |
30 |
28 |
24 |
16 |
129 |
39
ИДЕАЛЬНОЕ КОЛИЧЕСТВО СЕРИЙ ПРИ ШЕСТИ ВСПОМОГАТЕЛЬНЫХ
ПОСЛЕДОВАТЕЛЬНОСТЯХ
L a1(L) a2(L) a3(L) a4(L) a5(L) Sum
01
11
22
3 4
4 8
516
+
+
+
0 + 0 +
11
2 + 2 +
44
8 + 7 +
15 14
0
1
2
3
6
12
+
+
+
0
1
1
2
4
8
1
5
9
17
33
65
6 |
31 |
30 |
28 |
24 |
16 |
129 |
40
ИДЕАЛЬНОЕ РАСПРЕДЕЛЕНИЕ СЕРИЙ И ЧИСЛА ФИБОНАЧЧИ
L a1(L) |
a2(L) Sum |
||
0 |
1 |
0 |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
1 |
3 |
3 |
3 |
2 |
5 |
4 |
5 |
3 |
8 |
5 |
8 |
5 |
13 |
6 |
13 |
8 |
21 |
При использовании трех вспомогательных последовательностей идеальное количество исходных серий представляет собой числа Фибоначчи
Fi = Fi – 1 + Fi – 2
F0 = 0, F1 = 1, F2 = 1, F3 = 2, F4 = 3, F5 = 5,
41