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

15.Приложения

15.1.Виды сортировок

Сортировка – процесс перегруппировки заданного множества объектов в некотором определенном порядке.

Сортировка в программировании – это упорядочивание элементов в возрастающем или убывающем порядке.

Цель сортировки – облегчить последующий поиск элементов в отсортированном множестве.

Основные из наиболее важных применений сортировки:

  • решение задачи «группировки», когда нужно собрать вместе все элементы с одинаковым значением некоторого признака;

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

  • сортировка может сделать вывод результатов ЭВМ более удобными для человеческого восприятия.

Классификация сортировок

Обычно сортировки подразделяют на два класса:

  • внутренние сортировки, когда все сортируемые элементы хранятся в быстрой оперативной памяти. Отличительной особенностью является следующее: сортировка должна экономно использовать память. Это предполагает, что перестановки должны выполняться на одном и том же месте. Поэтому к внутренним методам сортировок относятся методы сортировки массивов, т.к. массивы располагаются во «внутренней» оперативной памяти, для которой характерны быстрый произвольный доступ к элементам.

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

Принципиальное различие в составлении алгоритмов внутренних и внешних сортировок обусловлено способом доступа к элементам массивов и файлов: в массиве любой элемент виден и доступен (рис. 1); в файле виден текущий элемент (рис. 2).

Рисунок 1 – Сортировка массива Рисунок 2 – Сортировка файлов

Внутренние методы сортировки, в свою очередь, делятся на простые и улучшенные методы.

К простым методам сортировок можно отнести:

  • сортировки с помощью включения (by insertion);

  • сортировки с помощью выбора (by selection);

  • сортировки с помощью обмена (by exchange).

К улучшенным методам относятся:

  • сортировка Шелла;

  • пирамидальная сортировка;

  • быстрая сортировка.

К внешним сортировкам относятся:

  • сортировка простым слиянием;

  • сортировка естественным слиянием;

  • многопутевое слияние;

  • многофазная сортировка;

  • каскадная сортировка.

Сортировка массивов

Основным критерием оценки для внутренних сортировок является экономное использование доступной памяти. Методы, в которых элементы из массива а передаются в результирующий массив b, представляют существенно меньший интерес. Для классификации методов сортировки хорошей мерой эффективности может быть число необходимых сравнений ключей (С) и число пересылок (перестановок) элементов (М).

Хотя хорошие алгоритмы сортировки требуют порядка n*logn сравнений, сначала разберем несколько простых и очевидных методов, называемых простыми, где требуется порядка n2 сравнений элементов.

Алгоритмы прямых методов следует изучить по следующим причинам:

  • прямые методы особенно удобны для объяснения характерных черт основных принципов большинства сортировок;

  • программы этих методов легко понимать, и они коротки – а ведь сами программы также занимают память;

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

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