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

13.9 Алгоритм сортировки методом выбора.

Начиная с первого элемента массива осуществляется поиск минимального элемента массива

и обмен его местами с первым элементом. Далее начиная со второго элемента осуществляется поиск минимального элемента массива и обмен его местами со вторым элементом. Процесс продолжается до тех пор, пока весь массив не будет отсортирован. Этот алгоритм дает такое же число сравнений O(n²), но число перестановок всего O(n).

13.10 Алгоритм сортировки методом вставок.

На каждом шаге алгоритма мы выбираем один из элементов входных данных и вставляем его на нужную позицию в уже отсортированном массиве, до тех пор, пока набор входных данных не будет исчерпан. Метод выбора очередного элемента из исходного массива произволен. Временная сложность алгоритма при худшем варианте входных данных – O(n²).

13.11 Алгоритм сортировки методом Шелла.

Сортировка Шелла – алгоритм сортировки, являющийся усовершенствованным вариантом сортировки вставками. Идея метода Шелла состоит в сравнении элементов, стоящих не только рядом, но и на определённом расстоянии друг от друга. Иными словами – это сортировка вставками с предварительными «грубыми» проходами. Аналогичный метод усовершенствования пузырьковой сортировки называется сортировка прочесыванием, рассмотренная выше.

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

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

•первоначально используемая Шеллом последовательность длин промежутков: d1=N/2, di=di−1/2, dk=1 в худшем случае, сложность алгоритма составит O(n²);

•предложенная Седжвиком последовательность: di={9⋅2i−9⋅2i/2+1,еслинечетн8⋅2i−6⋅2(i+1)/2+1,есличетн При использовании таких приращений средняя сложность алгоритма составляет: O(n7/6), а в худшем случае порядка O(n4/3).

13.12 Алгоритм сортировки слиянием.

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

Сортировка слиянием состоит из трёх этапов:

•массив разбивается на две части одинакового размера (пополам);

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

•два упорядоченных массива половинного размера соединяются в один.

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

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