Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Сортировка Шелла



Это еще одна модификация пузырьковой сортировки. Суть ее состоит в том, что здесь выполняется сравнение ключей, отстоящих один от другого на некотором расстоянии d. Исходный размер d обычно выбирается соизмеримым с половиной общего размера сортируемой последовательности. Выполняется пузырьковая сортировка с интервалом сравнения d. Затем величина d уменьшается вдвое и вновь выполняется пузырьковая сортировка, далее d уменьшается еще вдвое и т.д. Последняя пузырьковая сортировка выполняется при d=1. Качественный порядок сортировки Шелла остается O(N^2), среднее же число сравнений, определенное эмпирическим путем - log2(N)^2*N. Ускорение достигается за счет того, что выяв- ленные "не на месте" элементы при d>1, быстрее "всплывают" на свои места.

Пример 3.10 иллюстрирует сортировку Шелла.

{===== Программный пример 3.10 =====}

Procedure Sort(var a: seq);

Var d, i, t: integer; k: boolean; { признак перестановки }

begin d:=N div 2; { начальное значение интервала }

while d > 0 do { цикл с уменьшением интервала до 1 }

begin k:=true; {пузырьковая сортировка с интервалом d}

while k do { цикл, пока есть перестановки }

begin k:=false; i:=1;

for i:=1 to N-d do { сравнение эл-тов на интервале d }

begin if a[i] > a[i+d] then begin

t:=a[i]; a[i]:=a[i+d]; a[i+d]:=t; { перестановка }

k:=true; { признак перестановки }

end; { if... } end; { for... } end; { while k }

d:=d div 2; { уменьшение интервала }

end; { while d>0 } end;

Результаты трассировки программного примера 3.10 представлены в таблице 3.7.

Шаг d Содержимое массива а
Исходный   76 22_ 4 17 13 49_ 4 18 32 40 96 57 77 20_ 1 52
    32 22_ 4 17 13 20_ 1 18 76 40 96 57 77 49_ 4 52
    32 22_ 4 17 13 20_ 1 18 76 40 96 57 77 49_ 4 52
    13 20_ 1 17 32 22_ 4 18 76 40_ 4 52 77 49 96 57
    13 20_ 1 17 32 22_ 4 18 76 40_ 4 52 77 49 96 57
    13 20_ 1 17 32 22_ 4 18 76 40_ 4 52 77 49 96 57
    13 20_ 1 17 32 22_ 4 18 76 40_ 4 52 77 49 96 57
    _1 17_ 4 18_ 4 20 13 22 32 40 76 49 77 52 96 57
    _1 17_ 4 18_ 4 20 13 22 32 40 76 49 77 52 96 57
    _1_ 4 17_ 4 18 13 20 22 32 40 49 76 52 77 57 96
    _1_ 4_ 4 17 13 18 20 22 32 40 49 52 76 57 77 96
    _1_ 4_ 4 13 17 18 20 22 32 40 49 52 57 76 77 96
    _1_ 4_ 4 13 17 18 20 22 32 40 49 52 57 76 77 96
Результат   _1_ 4_ 4 13 17 18 20 22 32 40 49 52 57 76 77 96

Таблица 3.7





Дата публикования: 2014-11-04; Прочитано: 341 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...