
- •Организация и описание данных.
- •Тема 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. Обработка текстовой информации
2.4. Последовательности
Последовательности - структура однотипных данных. Последовательность в отличие о массивов не имеет фиксированной размерности и обработка ее элементов происходит последовательно, т.е. с начало обрабатывается 1-й элемент, затем 2-й элемент и т.д. На физическом уровне последовательность представляет собой типизированный файл и работа с ней происходит с помощью списков.
Пример: Организация последовательностей на языке Pascal
Uses crt;
Type
NodePtr = ^Node;
Node = Record
Info : Integer;
Next : NodePtr;
End;
Var
List : NodePtr;
First : NodePtr;
Begin
New(List);
First := List;
List^.Next := nil;
List.Info := 1
...
End;
2.5. Данные с динамической структурой
2.5.1. Рекурсивные типы данных
Для данных с динамической структурой характерно, что в процессе вычислений изменяется не только значение переменных, но даже их структура. Естественно, что на некотором уровне детализации, компоненты таких объектов представляют собой статические объекты, т.е. принадлежат к основному типу данных. Примечательно, что существуют некоторые близкие аналоги между методами, употребляемыми при построении алгоритмов и соответствующими методами для построения данных. Так, элементарным, не распадающимся на части является оператор присваивания A := 2, ему соответствуют сколярные типы данных, т.е. данные не имеющие структуры. Но эти сколярные типы являются строительными блоками для образования составных операторов и
данных. Самые простые образования - это составные операторы и записи - здесь мы пользуемся оператором цикла FOR и массивом. Здесь возникает вопрос существует ли структура данных аналогичная оператору процедуры. Это рекурсивность, т.к. по аналогии с процедурой, содержащей одно или более обращение к самой себе, величины, относящиеся к рекурсивному типу, должны состоять из одной или более компонент, относящиеся к одному типу, что и сама величина.
Тема 3. Методы и алгоритмы сортировки массивов
Сортировка данных - это процесс перегруппировки заданного множества объектов в некотором определенном порядке в соответствие с заданным критерием.
Цель сортировки - облегчить последующий поиск элементов в отсортированном множестве.
Сортировка - это идеальный объект для демонстрации и приложения огромного разнообразия алгоритмов, которые были изобретены для этой одной задачи. Многие алгоритмы в некотором смысле оптимальны, другие имеют свои достоинства. Выбор алгоритма сортировки зависит от структуры обрабатываемых данных, т.к. в зависимости от структуры данных эффективно действуют лишь определенные методы и алгоритмы.
В общем случае методы сортировки разбиваются на 2 класса: сортировка массивов и сортировка последовательностей.
3.1. Сортировка массивов
Основное условие - выбранный метод сортировки массивов должен экономично использовать доступную память. Это предполагает, что перестановки элементов должны выполняться на том же месте.
Мера эффективности сортировки: С - число сравнений, М - число перестановок. Они являются функциями C = C(n) и M = M(n), где n – число сортируемых элементов.
3.1.1. Сортировка с помощью прямого включения (мпв)
Элементы массива мысленно делятся на 2 последовательности: "готовую" - которая стоит в слева и все элементы которой упорядочены, и "исходную" - состоит из неупорядоченных элементов исходного массива. На каждом шаге i, начиная с i=2, из исходной последовательности извлекается i-ый элемент и перекладывается в нужное место готовой последовательности путем сравнения с ее элементами.
Максимальное число сравнений: C = n-1
Минимальное число сравнений : C = 1
Среднее число сравнений : C = i/2
Среднее число пересылок : M = C + 2
Пример:
Исх.послед. 55 44 12 42 94 18 06 67
i=2 44 55 12 42 94 18 06 67
i=3 12 44 55 42 94 18 06 67
i=4 12 42 44 55 94 18 06 67
i=5 12 42 44 55 94 18 06 67
i=6 12 18 42 44 55 94 06 67
i=7 06 12 18 42 44 55 94 67
i=8 06 12 18 42 44 55 67 94