Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab_Sem2_Kurs_1_09.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
310.78 Кб
Скачать

Лабораторная работа №9.

Тема: Алгоритмы сортировок массивов данных.

Цель работы: Знакомство с основными алгоритмами сортировок массивов данных, классификация этих алгоритмов в соответствии с их эффективностью.

Используемые программные средства: Delphi.

1. Теоретические сведения:

1.1. Методы сортировки

Под сортировкой обычно понимают процесс целенаправленной перестановки элементов данных в определенном порядке по возрастанию или убыванию согласно определенным линейным отношениям их порядка, таким как отношения или для чисел. Цель сортировки – облегчить в дальнейшем поиск элемента в отсортированной (упорядоченной) совокупности элементов. Это напоминает поиск элемента в словаре, телефонном справочнике, ведомостях и так далее.

Методы сортировки очень нужны при обработке данных. С сортировкой связаны многие фундаментальные приемы построения алгоритмов. Сортировка является идеальным примером огромного разнообразия алгоритмов, которые исполняют одну и тую же задачу, многие из которых в некотором смысле являются оптимальными, а большинство имеет некоторые преимущества по сравнению с остальными. Поэтому на примере сортировки можно убедиться в необходимости сравнительного анализа алгоритмов. Здесь можно увидеть, как при помощи усложнения алгоритма можно получить существенное увеличение эффективности при сравнении с более простыми и очевидными алгоритмами.

Зависимость выбора алгоритма от структуры данных – явление довольно частое, и в случае сортировки это особо сильно ощущается, поэтому методы сортировки обычно разделяют на две категории:

  • сортировка данных типа массив;

  • сортировка последовательных файлов.

Эти два класса часто называют внутренней и внешней сортировкой, поскольку массивы размещаются в оперативной памяти быстрого доступа к каждому элементу, а последовательные файлы сохраняются в более медленной, но более емкой памяти, когда доступ имеем только к текущему элементу.

Сортировка строк – это ранжирование данных строкового типа по алфавиту (фактически по номеру составляющих строку символов в ASCII-коде).

Отметим, что сортировка строк или элементов файла с прямым (а не последовательным) доступом во всем напоминает сортировку массивов, поскольку доступ имеем к каждому элементу.

Введем систему обозначений, которую будем использовать в дальнейшем. Пусть нам даны элементы , , …, .

Сортировка по возрастанию (убыванию) означает перестановку этих элементов в таком порядке: , , …, , что при заданной функции упорядочения справедливы отношения: (или наоборот ).

Обычно функция упорядочения не подсчитывается по какому-то специальному правилу, а присутствует в каждом элементе в виде явной компоненты (поля элемента), которую называют ключом элемента. Таким образом, для представления элемента особенно хорошо подходит структура записи. Для дальнейшего рассмотрения материала определим тип item, который будет использоваться в алгоритмах сортировки так:

Const n = ...;

Type inf = record

...

end ;

item = record

key : integer;

Zmest : inf; {описание «других компонентов»}

end;

Index = 0..n;

«Другие компоненты» – это все существенные данные об элементе. Поле key – ключ, и служит только для идентификации элемента. Но если мы говорим об алгоритмах сортировки, ключ для нас – единственная существенная компонента, и у нас нет необходимости определять остальные. Тип ключа может быть любым типом, для которого заданы отношения всеобщего порядка «больше или равно» («меньше или равно»).

Введём еще такое обозначение:

Var A: array [1..n] of item;

Метод сортировки будем называть устойчивым, если относительный порядок элементов с одинаковыми ключами не изменяется при сортировке. Устойчивость сортировки часто бывает желательна, если элементы упорядочены (отсортированы) по каким-то второстепенным ключам, т.е. по свойствам, которые не отражены в первоначальном ключе.

Разберем подробно некоторые интересные алгоритмы сортировки.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]