Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 5 Сортировки и порядковые статистики.doc
Скачиваний:
11
Добавлен:
24.04.2019
Размер:
73.22 Кб
Скачать

Оч ← пусто

для j от 0 до m-1 делать Q[j] ← ПУСТО

для l от lmax до 1

делать

присоединить ДЛ[l] к началу ОЧ

пока ОЧ ≠ ПУСТО

делать

пусть Аi – первая цепочка в списке ОЧ

Q[ail] ← Аi

для j ← НЕПУСТ[l]

делать

присоединить Q[j] к концу ОЧ

Q[j] ← ПУСТО

Например:

Даны цепочки a, bab, abc.

Цепочка указателей

Данные

1

a

3

b

a

b

3

a

b

0

c

Первый шаг:

a

(1, a)

bab

(1, b); (2, a); (3, b)

abc

(1, a); (2, b); (3, c)

(1, a); (1, a); (1, b); (2, a); (2, b); (3, b); (3, c)

НЕПУСТ[1] ← a, b

НЕПУСТ[2] ← a, b

НЕПУСТ[3] ← b, c

Второй шаг:

ДЛ[1] ← а

ДЛ[2] ← ПУСТО

ДЛ[3] ← bab, abc.

Третий шаг:

ОЧ = bab, abc.

Располагаем цепочки по их третьей компоненте. Равенство НЕПУСТ[3] = b, c гарантирует, что построении упорядоченного списка в соответствии с алгоритмом не обязательно присоединять Q[а] к концу списка ОЧ.

l=3 ОЧ = bab, abc

l=2 ОЧ = bab, abc

l=1 ОЧ = а, abc, bab

При третьем прохождении Q[с] не надо присоединять к концу списка, т.к. НЕПУСТ[1] не содержит с.

Результат: а, abc, bab

Задание.

  1. Написать алгоритмы разобранных сортировок.

  2. Изучить самостоятельно метод Шелла.

  3. Разобраться в этапах сортировки слиянием.