Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvetu.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
29.7 Кб
Скачать
  1. По указателях и индексам, распределяющего подсчета

Сортировка по индексам и указателям

Применяется для непростых типов данных.

Суть – сортировке подлежит не сам набор данных, а массив ссылок (указателей на элементы набора данных) или индексный массив (элементы – это индексы элементов набора данных).

Сортировка методом распределяющего подсчета

Применяется для наборов данных, элементы которых идентифицируются ключом описываемым целым значением из диапазона [0; M] (ключи можно использовать в качестве индексов элементов).

Суть – сначала подсчитывается количество ключей для каждого значения ключа в массиве индексов, потом вычисляются частичные суммы (для каждого значения ключа подсчитывается количество ключей с меньшими значениями), затем в дополнительный массив переписываются ключи в соответствии с вычисленными значениями, а затем упорядоченный дополнительный массив переписывается в массив индексов.

  1. Быстрая сортировка

Методы «быстрой» сортировки

Базируются на алгоритме «разделяй и властвуй» и операции выборки.

В зависимости от способа деления набора данных на части и различают несколько видов быстрой сортировки:

1. Базовый метод «быстрой» сортировки

2. «Быстрая» сортировка с разделением на три части

3. «Быстрая» сортировка методом вычисления медианы из трех элементов

Базовый метод «быстрой» сортировки

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

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

«Быстрая» сортировка с разделением на три части

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

«Быстрая» сортировка

методом вычисления медианы из трех элементов

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

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

  1. Слияния

Методы слияния и сортировки слиянием

Слияние – это процесс объединения отсортированных наборов данных в один большего размера.

1. Метод двухпутевого слияния

2. Метод нисходящей сортировки слиянием

3. Метод восходящей сортировки слиянием

Метод двухпутевого слияния

Суть – из двух отсортированных наборов данных последовательно выбираются наименьшие и перемещаются в третий (i-й элемент из одного набора сравнивается с j-й элементом из второго набора и наименьший записывается в третий).

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

Метод нисходящей сортировки слиянием

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

Метод восходящей сортировки слиянием

Суть – не рекурсивная сортировка, выполнение которой предполагает использование принципа «объединяй и властвуй» (сначала выполняется слияние соседних элементов, затем соседних пар, затем соседних двойных пар и т.д.

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