
- •Организация и описание данных.
- •Тема 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.9. Поразрядная сортировка
Идея данной сортировки заключается в том, что с начала сортируются младшие разряды значений, а затем старшие.
Пример :
Исх. Массив |
Сортировка по младшему разряду |
Сортировка по старшему разряду |
19 |
01 |
01 |
13 |
31 |
02 |
05 |
11 |
05 |
27 |
02 |
09 |
01 |
13 |
11 |
26 |
05 |
13 |
31 |
26 |
16 |
16 |
16 |
19 |
02 |
27 |
26 |
09 |
19 |
27 |
11 |
09 |
31 |
3.1.10.Сортировка поразрядным группированием
Данная сортировка начинается с анализа самого младшего разряда цифры ключевого слова, а затем все величины с одинаковыми младшими разрядами объединяются в группы. Затем содержимое групп располагаются в порядке возрастания значения анализируемого разряда и процесс повторяется до тех пор, пока не остается цифр слева. Система счисления с основанием Р требует Р групп.
Пример:
Исх. массив: 19 13 05 27 01 26 31 16 02 09 11
Первое распределение, происходит по последней цифре
0: нет
1: 01, 31, 11
2: 02
3: 13
4: нет
5: 05
6: 26, 16
7: 27
8: нет
9: 19, 09
Получаем объединение: 01 31 11 02 13 05 26 16 27 19 09
Второе распределение осуществляем по первой цифре, получаем
0: 01, 02, 05, 09
1: 11, 13, 16, 19
2: 26, 27
3: 31
4-9: нет
Окончательное объединение: 01 02 05 09 11 13 16 19 26 27 31
3.2. Сортировка последовательностей
3.2.1. Трехленточная сортировка
Трехленточная сортировка последовательностей, представляет из себя простое прямое слияние последовательностей, для осуществления которого требуется три ленты. Суть метода состоит в следующем - исходная последовательность разбивается на две части, затем эти части сливаются, причем одиночные элементы образуют упорядочные пары. Полученная последовательность вновь разбивается на две части и сливаются, при этом упорядоченные пары образуют упорядоченные четверки. И так далее - четверки сливаются в восьмерки и т.п., каждый раз удваивая длину слитых последовательностей до тех пор, пока не будет упорядоченна вся последовательность целиком.
Число пересылок : M = n * log n
Пример:
Исх. послед.: 44 55 12 42 94 13 05 67
1. 44 55 12 42
94 18 06 67
44 94 18 55 06 12 42 67
2. 44 94 18 55
06 12 42 67
06 12 44 94 18 42 55 67
3. 06 12 44 94
18 42 55 67
06 12 18 42 44 55 67 94
3.2.2. Сортировка естественным слиянием
Этот метод используется, когда последовательности частично упорядочены, эти упорядоченые последовательности называют сроками или сериями, поэтому при этой сортировке объединяются серии, а не последовательности фиксированной длинны. Каждый проход состоит из фазы распределения и фазы слияния. При разделении исходной последовательности на две подпоследовательности оптимальным вариантом будет тот, когда число серий в этих последовательностях одинаково; существенно неравномерное распределение серий в подпоследовательностях маловероятно, но может случиться, что в одной из подпоследовательностей серий на одну больше, тогда лишняя серия при проходе просто копируется.
Пример:
Имеем исходную последовательность (серии разделены ";") -
17 31; 05 59; 13 41 43 67; 11 23 29 47; 03 07 71; 02 19 57; 37 61
объединяем серии по две, одна последняя серия лишняя -
05 17 31 59; 11 13 23 29 41 46 47 67; 02 03 07 19 57 71; 37 61
05 11 13 17 23 29 31 41 43 47 59 67; 02 03 07 19 37 57 61 71
02 03 05 07 11 13 17 19 23 29 31 37 41 43 47 57 59 61 67 71