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

Метод Шелла (сортировка с убывающем шагом)



Записи R1,…, RN перемещаются на том же месте. После завершения сортировки их ключи будут упорядочены: К1 £ … £К N. Для управления процессом сортировки используются вспомогательная последовательность шагов h t h t-1,…, h 1, где h 1=1. Правильно выбрав эти приращения, можно значительно сократить время сортировки. При t = 1 алгоритм сводится к алгоритму простой вставки.

(Цикл по р) Выполнить шаг Ш2 при р = t, t –1, …, 1, после чего завершить алгоритм.

(Цикл по j). Установить h:= ht, и выполнить шаги Ш3 – Ш6 при h < j £ N. (для сортировки элементов, отстоящих друг от друга на h позиций, воспользуемся простыми вставками и в результате получим К t £ К t + h при 1£ i £ N – h.

(Установить i, К, R). Установить i = j – h, К=К j , R = R j .

(Сравнить К, К i ) Если К>=К i , то перейти к шагу Ш6.

(Переместить Ri , уменьшить i). Установить R i + h = R i , затем i =i– h. Если i > 0, то возвратиться к шагу Ш4.

(R на место Ri+ h ) Установить Ri+ h = R.

На выбор шагов ht, ht-1,…, h1 значительно влияет условие делимости:

hs+1 mod hs = 0, при t > s >= 1.

Применяя метод Шелла со всего двумя шагами, можно существенно сократить время по сравнению с простыми вставками с 0(N2) до 0(N1.667). Если использовать больше шагов, то можно добиться лучших результатов.





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



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