Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
САОД1z.doc
Скачиваний:
60
Добавлен:
11.04.2015
Размер:
715.26 Кб
Скачать

Алгоритм на псевдокоде

Метод шейкерной сортировки

Обозначим

L – левая граница рабочей части массива.

R – правая граница рабочей части массива.

n – количество элементов в массиве

L: = 1, R: = n, k: = n,

DO

DO (j =R, R-1, ... L+1)

IF (aj < aj-1) aj ↔ aj-1, k: = j FI

OD

L: = k

DO (j: = L, L+1, ... R-1)

IF (aj > aj+1) aj ↔ aj+1, k: = j, FI

OD

R: = k

OD (L < R)

Оценим трудоемкость метода. Количество пересылок такое же, как и в методе пузырьковой сортировки Mсред=О(n2), при n. Улучшения в методе шейкерной сортировки приводят к снижению количества сравнений. Точное выражение для величины С получить не удается, поэтому определим границы, в которых изменяется С. Если сортируется массив, в котором элементы расположены в порядке возрастания, то в методе шейкерной сортировки достаточно один раз просмотреть массив. Тогда Сmin = n-1, где n – количество элементов в массиве. Если массив отсортирован в обратном порядке, то на каждой итерации границы слева и справа сдвигаются на одну позицию и Сmax = . Следовательно, Ссред=О(n2), при n. Таким образом, как и пузырьковая сортировка, метод шейкерной сортировки сильно зависит от исходной упорядоченности массива по количеству сравнений. Метод обеспечивает устойчивую сортировку.

    1. Контрольные вопросы

  1. Сформулируйте основную идею метода прямого выбора.

  2. Каковы теоретические оценки сложности метода пузырьковой сортировки?

  3. Как метод пузырьковой сортировки зависит от начальной отсортированности массива?

  4. Какова трудоемкость метода шейкерной сортировки?

  5. Является ли метод шейкерной сортировки устойчивым?

  1. Метод Шелла

    1. Метод прямого включения

Сначала рассмотрим метод сортировки, который является базовым для метода Шелла. Метод прямого включения заключается в следующем. Начиная с i = 2, i=2,… n, берём очередной i–й элемент массива и включаем его на нужное место среди первых (i-1) элементов, при этом все элементы, которые больше ai сдвигаются на одну позицию вправо.

Пример. Отсортировать слово методом прямого включения.

Условные обозначения

X i-тый элемент

X сравнение элемента X с i-тым элементом

сдвиг элемента на одну позицию вправо

К

У

Р

А

П

О

В

А

К

У

Р

А

П

О

В

А

К

Р

У

А

П

О

В

А

А

К

Р

У

П

О

В

А

А

К

П

Р

У

О

В

А

А

К

О

П

Р

У

В

А

А

В

К

О

П

Р

У

А

А

А

В

К

О

П

Р

У

Рисунок 5 Метод прямого включения