Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методы и алгоритмы сортировки и обработки данных / Методические указания для заочников (часть 1).doc
Скачиваний:
35
Добавлен:
01.05.2014
Размер:
148.99 Кб
Скачать

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