![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Записи 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!