Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VOPROS_K_EKZAMENU_SiAOD.docx
Скачиваний:
65
Добавлен:
27.09.2019
Размер:
120.34 Кб
Скачать
  1. Сортировка методом Шелла.

Улучшенные методы сортировки.

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

сортировка с убывающем смещением = сортировка Шелла

b1 b2… | bj… bn

Каждый проход сортировки хар-ся неким смещением Н и между собой сортируются записи, каждая из которых отстоит от предыдущих на Н позиций.

Суть: на каждом проходе сортировки все предыдущие записи делятся на группы. В каждую группу попадают записи, отстающие от друг друга на Н позиций. Затем каждая группа записей сортируется методом простых вставок.

На следующем проходе сортировки все записи снова делятся на группы, но отстоящие друг от друга уже на другое, меньшее, чем раньше, расстояние. И снова каждая группа записей сортируется методом простых вставок. На последнем этапе шаг равен 1, т к в самом плохом случае на последнем проходе будет проведена оставшаяся сортировка. Выбор значений смещений на последующих проходах имеет существенное значение для скорости сортировки. До сих пор неизвестно, какие расстояния дают наилучшие результаты. Желательно, чтобы взаимодействие различных цепочек проходило как можно чаще.

3 7 15 31.

1 2 4 8.

3 7 0 -1 5 2 4 -6 11 4 -78 8 15 -4 14 4 2 1 шаги

3 5 11 15 – сортируем методом простых вставок (тут уже все готово)

7 2 4 -4

2 7 4 -4

2 4 7 -4

-4 2 4 7

0 4 -78 14

0 4 -78 14

-78 0 4 14

-1 -6 8

3 -4 -78 -6 5 2 0 -1 11 4 4 8 15 7 14

3 -78 5 0 11 4 15 14

-78 0 3 4 5 11 14 15

-4 -6 2 -1 4 8 7

-6 -4 -1 2 4 7 8

-78 -6 0 -4 3 -1 4 2 5 4 11 7 14 8 15

Сортируем….

-78 -6 -4 -1 0 2 3 4 4 5 7 8 11 14 15

  1. Быстрая сортировка.-разобрать

Это основной алгоритм сортировки, ибо в большинстве случаев он дает наилучшие результаты (придумал Hoare). Основная идея заключается в следующем. Выберем некий элемент M внутри диапазона, например в середине. Затем все элементы большие этого числа переносятся в одну сторону, а меньшие в другую. На практике это выглядит так:

  • ищем первый элемент меньший (или равный) выбранного элемента M от начала диапазона,

  • ищем первый элемент больший (или равный) выбранного элемента M от конца диапазона,

  • меняем их местами.

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

Улучшенные методы сортировки.

  1. Сортировка обменами.

Быстрая сортировка = обменная сортировка с разделением.

b1 b2 b3… bn

k1 k2 k3… kn

Выбираем k опорное или эталонное. Идем слева направо или наоборот.

Например, сначала слева-направо, потом справа-налево.

Находим k > kоп. Останавливаемся. Начинаем движение с конца массива. Ищем k < kоп. Останавливаемся. Меняем местами эти эл. Опять идем слева направо с эл., на кот. мы остановились. И опять повторяем все.

После того, как все отсортировали – делим массив на 2 части (м.б. неровные).

Из этих 2-х частей опять делаем сортировку (ту, что написана выше).

Можно использовать рекурсию или итерации.