
- •Организация и описание данных.
- •Тема 4. Алгоритмы обработки текстовой информации 14
- •Тема 3. Методы и алгоритмы сортировки массивов и последовательностей данных.
- •Тема 4. Алгоритмы обработки текстовой информации
- •Тема 2. Определение, описание и представление в эвм основных структур данных
- •2.1. Массивы
- •2.2. Множества
- •2.3. Записи
- •2.4. Последовательности
- •2.5. Данные с динамической структурой
- •2.5.1. Рекурсивные типы данных
- •Тема 3. Методы и алгоритмы сортировки массивов
- •3.1. Сортировка массивов
- •3.1.1. Сортировка с помощью прямого включения (мпв)
- •3.1.2. Сортировка с помощью прямого выбора
- •3.1.3.Сортировка с помощью прямого обмена (Пузырьковая сортировка)
- •3.1.4. Шейкерная сортировка
- •3.1.5. Сортировка методом Шелла
- •3.1.6. Сортировка с помощью дерева
- •44 55 12 42 94 18 06 67
- •3.1.7. Сортировка с помощью разделения(метод Хоара)
- •3.1.8.Сортировка вычислением адреса
- •3.1.9. Поразрядная сортировка
- •3.1.10.Сортировка поразрядным группированием
- •3.2. Сортировка последовательностей
- •3.2.1. Трехленточная сортировка
- •3.2.2. Сортировка естественным слиянием
- •3.2.3. Многопутевая сортировка
- •3.2.4. Многофазная сортировка
- •Тема 4. Алгоритмы обработки текстовой информации
- •4.1. Алгоритм Кнута, Мориса м Пратта ( кмп - алгоритм )
- •4.2. Алгоритм Боуера и Мура ( бм - алгоритм )
- •4.3. Комбинированный алгоритм
- •Указания к выполнению контрольных работ
- •Общие требования по оформлению контрольных работ
- •Задания Задание 1. Сортировка массивов
- •Задание 2. Сортировка последовательностей
- •Задание 3. Обработка текстовой информации
3.1.2. Сортировка с помощью прямого выбора
Пусть имеется массив An, где n - количество элементов в массиве. Сначала выбирается элемент с наименьшим значением и меняется местами с элементом A1. Этот процесс затем осуществляется с отставшимися n-1 элементами, n-2 элементами и так до тех пор пока не останется один самый больший элемент.
Число сравнений : C = (n2 - n)/2
Число перестановок: Mmin = 3 * (n-1)
Mmax = n2/4 + 3 * (n-1)
Пример:
Исх.послед. 55 44 12 42 94 18 06 67
06 44 12 42 94 18 55 67
06 12 44 42 94 18 55 67
06 12 18 42 94 44 55 67
06 12 18 42 94 44 55 67
06 12 18 42 44 94 55 67
06 12 18 42 44 55 94 67
06 12 18 42 44 55 67 94
3.1.3.Сортировка с помощью прямого обмена (Пузырьковая сортировка)
Идея данной сортировки основана на парном сравнение соседних элементов в массиве и перестановке их в требуемом порядке: процесс продолжается до полного упорядочения всех элементов.
Пример:
Исх.послед. 19 13 05 27 01 26 31 16 02 09 11 21
i = 1 13 05 19 01 26 27 16 02 09 11 21 31
i = 2 05 13 01 19 26 16 02 09 11 21 27 31
i = 3 05 01 13 19 16 02 09 11 21 26 27 31
i = 4 01 05 13 16 02 09 11 19 21 26 27 31
i = 5 01 05 13 02 09 11 16 19 21 26 27 31
i = 6 01 05 02 09 11 13 16 19 21 26 27 31
i = 7 01 02 05 09 11 13 16 19 21 26 27 31
Как видно из примера, после 1-го прохода самый больной элемент перемещается в конец массива, соответственно при 2-ом проходе данный элемент можно исключить из просмотра, что существенно сократит время сортировки.
3.1.4. Шейкерная сортировка
Данный метод является видоизменением метода прямого обмена, при нем происходит чередование просмотров, то есть изменения их направления: сначала слева - направо, затем справа - налево и т.д. Этот способ дает уменьшение числа сравнений по сравнению с методом прямого обмена.
3.1.5. Сортировка методом Шелла
Идея сортировки предложенная Шеллом состоит в перемещение значений путем перестановки пар, причем сравниваются значения, находящиеся на некотором расстоянии d. При этом значения, стоящие не на месте будут перемещаться быстрее, чем при простом обмене. На каждом новом шаге просмотра значение d обычно уменьшается, при
этом:
di = (di-1 + 1) / 2
При просмотре каждое значение сравнивается со значением, расположенным на d позиции дальше в векторе величин. Если верхнее значение больше нижнего значения, то делается перестановка и т.д.
Пример:
исх. массив |
Просмотры | |||
1 |
2 |
3 |
4 | |
d=6 |
d=3 |
d=2 |
d=1 | |
19 |
19 |
09 x |
02 x |
01 x |
13 |
13 |
01 x |
01 |
02 x |
05 |
02 x |
02 |
09 x |
05 x |
27 |
09 x |
19 x |
05 x |
09 x |
01 |
01 |
11 xx |
11 |
11 |
26 |
21 x |
05 x |
13 xx |
13 |
31 |
31 |
27 x |
16 xx |
16 |
16 |
16 |
13 xx |
19 x |
19 |
02 |
05 x |
21 x |
21 xxx |
21 |
09 |
27 |
31 x |
26 x |
26 |
11 |
11 |
16 x |
27 x |
27 |
21 |
26 x |
26 |
31 xx |
31 |
Обозначения: x - обмен, хх - двойной обмен, ххх - тройной обмен