
- •Структура данных и ее классификация.
- •«Дерево», его классификация, примеры, способы перемещения
- •«Хэш-таблицы»
- •Способы реализации «хэш-функций»
- •Разрешение коллизий
- •Алгоритмы и свойства
- •Рекурсия
- •«Разделяй и властвуй», «Ханойские башни»
- •Динамическое прогриммирование
- •Сортировка
- •Выбор, вставка, пузырьки и Шелла
- •По указателях и индексам, распределяющего подсчета
- •Быстрая сортировка
- •Слияния
- •Очередь по преоритету
- •Пирамидальная сортировка
- •Порязрядная сортировка
- •Алгоритм поиска
- •Суть последовательно, бинарного и интерполяционнного поиска
По указателях и индексам, распределяющего подсчета
Сортировка по индексам и указателям
Применяется для непростых типов данных.
Суть – сортировке подлежит не сам набор данных, а массив ссылок (указателей на элементы набора данных) или индексный массив (элементы – это индексы элементов набора данных).
Сортировка методом распределяющего подсчета
Применяется для наборов данных, элементы которых идентифицируются ключом описываемым целым значением из диапазона [0; M] (ключи можно использовать в качестве индексов элементов).
Суть – сначала подсчитывается количество ключей для каждого значения ключа в массиве индексов, потом вычисляются частичные суммы (для каждого значения ключа подсчитывается количество ключей с меньшими значениями), затем в дополнительный массив переписываются ключи в соответствии с вычисленными значениями, а затем упорядоченный дополнительный массив переписывается в массив индексов.
Быстрая сортировка
Методы «быстрой» сортировки
Базируются на алгоритме «разделяй и властвуй» и операции выборки.
В зависимости от способа деления набора данных на части и различают несколько видов быстрой сортировки:
1. Базовый метод «быстрой» сортировки
2. «Быстрая» сортировка с разделением на три части
3. «Быстрая» сортировка методом вычисления медианы из трех элементов
Базовый метод «быстрой» сортировки
Суть – набор данных делится на две части, которые сортируются независимо друг от друга. Положение точки деления зависит от исходного порядка элементов в наборе.
Разделяющий элемент определяется произвольно, затем помещается в свою окончательную позицию и выполняется перегруппировка набора данных следующим образом: элементы с меньшим значением помещаются слева, элементы с большим значением – справа. Затем каждая часть сортируется отдельно.
«Быстрая» сортировка с разделением на три части
Суть - набор данных делится на три части: элементы со значением равным разделяющему и встретившиеся в левой части перемешаются к левому краю, элементы со значением равным разделяющему и встретившиеся в правой части перемещаются к правому краю, затем части сортируются отдельно.
«Быстрая» сортировка
методом вычисления медианы из трех элементов
Суть – разделяющий элемент выбирается произвольно из трех (в основном из первого, последнего и среднего), затем средним меняется местами с предпоследним, затем эти элементы упорядочиваются (наименьший – первый, наибольший – последний), после производится сортировка (возможно рекурсивно) между первым и предпоследним элементами.
Выходом из рекурсивного вызова является проверка условия: если количество элементов в поднаборе меньше некоторого установленного значения, то сортировка в такой части игнорируется.
Слияния
Методы слияния и сортировки слиянием
Слияние – это процесс объединения отсортированных наборов данных в один большего размера.
1. Метод двухпутевого слияния
2. Метод нисходящей сортировки слиянием
3. Метод восходящей сортировки слиянием
Метод двухпутевого слияния
Суть – из двух отсортированных наборов данных последовательно выбираются наименьшие и перемещаются в третий (i-й элемент из одного набора сравнивается с j-й элементом из второго набора и наименьший записывается в третий).
Альтернатива прямому слиянию – это обменное слияние, при выполнении которого сначала происходит копирование двух наборов данных в один (элементы располагаются растущими навстречу друг другу), а затем производится сравнение элементов объединенного набора данных левого конца с правым и перемещение наименьшего в результирующий набор данных.
Метод нисходящей сортировки слиянием
Суть – набор данных делится на две части и выполняется рекурсивная сортировка обеих частей с последующим их слиянием.
Метод восходящей сортировки слиянием
Суть – не рекурсивная сортировка, выполнение которой предполагает использование принципа «объединяй и властвуй» (сначала выполняется слияние соседних элементов, затем соседних пар, затем соседних двойных пар и т.д.