Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Voprosy_SiAOD_2021.docx
Скачиваний:
94
Добавлен:
01.04.2022
Размер:
5 Mб
Скачать
  1. Алгоритмы сортировки. Вставкой.

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

Сложность: O(n^2)

  1. Алгоритмы сортировки. Обменом.

Элемент сравниваем последовательно друг с другом и меняем местами, если эл-т больше последующего.

Сложность:O(n^2)

Суть алгоритма пузырьковой сортировки состоит в сравнении

соседних элементов и их обмене, если они находятся

не в надлежащем порядке. Неоднократно выполняя это действие,

мы заставляем наибольший элемент "всплывать" к концу массива.

  1. Алгоритмы сортировки. Шелла.

  1. считаем шаг d=n/2, где n- длина массива.

  2. !шаг каждый раз уменьшается в 2 раза (если нечетное кол-во шаг в меньшую сторону

  3. Сравниваем эл-ты, находящиеся на расстоянии этого шага

Сложность:O(n^2)?????????????

ИНЫМИ СЛОВАМИ:

Суть её похожа на сортировку пузырьком,

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

последовательности, находящихся друг от друга на некотором расстоянии.

Изначально это расстояние равно d или N/2, где N — общее число элементов.

На первом шаге каждая группа включает в себя два элемента расположенных

друг от друга на расстоянии N/2; они сравниваются между собой, и,

в случае необходимости, меняются местами. На последующих шагах

также происходят проверка и обмен, но расстояние d сокращается на d/2,

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

Постепенно расстояние между элементами уменьшается,

и на d=1 проход по массиву происходит в последний раз.

  1. Алгоритмы сортировки. Турнирная.

(метод бинарного дерева)

Этот метод сортировки получил свое название из-за сходства с кубковой системой проведения спортивных соревнований: участники соревнований разбиваются на пары, в которых разыгрывается первый тур; из победителей первого тура составляются пары для розыгрыша второго тура и т.д. Алгоритм сортировки состоит из двух этапов. На первом этапе строится дерево: аналогичное схеме розыгрыша кубка.

Турнирное дерево может использоваться для сортировки списка из N элементов. Рассмотрим эффективный алгоритм, использующий дерево, представленное в виде массива. Пусть имеется последовательно представленное дерево, содержащее N элементов листовых узлов в нижнем ряду. Эти элементы запоминаются на уровне k, где 2k > N. Предположим, что список сортируется по возрастанию. Мы сравниваем каждую пару элементов и запоминаем меньший из них (победителя) в родительском узле. Процесс продолжается до тех пор, пока наименьший элемент (победитель турнира) не окажется в корневом узле. Например, приведенное ниже дерево задает следующее начальное состояние массива из N = 8 целых чисел. Элементы запоминаются на уровне 3, где 23 = 8.

Со второго уровня начинаются "игры" — в родительские узлы помещаются наименьшие значения в парах. Например, "игру" между элементами Tree[7] и Tree[8] выигрывает меньший из них, и значение 25 записывается в Tree[3]. Подобные сравнения проводятся также на втором и первом уровнях. В результате последнего сравнения наименьший элемент попадает в корень дерева на уровне 0.

Как только наименьший элемент оказывается в корневом узле, он удаляется со своего старого места и копируется в массив. В первый раз в A[0] записывается 10, а затем дерево обновляется для поиска следующего наименьшего элемента. В турнирной модели некоторые матчи должны быть сыграны повторно. Поскольку число 10 изначально было в Tree[13], проигравший в первом круге Tree[14] = 40 должен снова участвовать в турнире. Tree[14] копируется в свой родительский узел Tree[6], а затем снова проводятся матчи в индексе 6 (15 побеждает 40) и в индексе 2 (15 побеждает 20). В результате 15 попадает в корень и становится вторым наименьшим элементом списка. Корень копируется в A[1], и процесс продолжается.

Процесс продолжается до тех пор, пока все листья не будут удалены. В нашем примере последний (наибольший) узел играет серию матчей, в которых побеждает всех по умолчанию. После копирования числа 50 в A[7] мы получаем отсортированный список.

Если кратко, Кутейников тут говорил, что мы делим элементы массива по парам, из каждой пары выбираем наименьший, так, пока он не дойдет до вершины.

Этот элемент выписываем в массив, короче выводим его, а в дереве заменяем на бесконечность.

В конце все в бесконечностях, тадам.

Число сравнений (n-1)log2n: время работы O(log2n)