1. 5. Сортировка Шелла
В
методе Шелла сравниваются не соседние
элементы, а элементы,
расположенные на расстоянии (
)
(где
—
шаг
между
сравниваемыми элементами, [ ] — целая
часть от числа). После
каждого просмотра шаг
уменьшается
вдвое. На последнем
просмотре он сокращается до
.
Например, пусть дан список, в котором число элементов четно:
{40, 11, 83, 57, 32, 21, 75, 64}.
Список
длины п
разбивается
на п/2
частей,
т. е.
.
При
первом просмотре сравниваются элементы,
отстоящие друг
от друга на
(рис. 7), т. е.
и
т.
д. Если
,
то
происходит обмен между позициями i
и i+d.
Перед
вторым
просмотром выбирается шаг
(рис. 8). Затем выбираем
шаг
(рис. 9), т. е. имеем аналогию с методом
стандартного
обмена.
Сложность
метода Шелла —
.
Исходный массив |
40 |
11 |
83 |
57 |
32 |
21 |
75 |
64 |
|
32 |
|
|
|
40 |
|
|
|
|
|
11 |
|
|
|
21 |
|
|
|
|
|
75 |
|
|
|
83 |
|
|
|
|
|
57 |
|
|
|
64 |
Полученный массив |
32 |
11 |
75 |
57 |
40 |
21 |
83 |
64 |
Рис. 7. Метод Шелла (шаг ( )
Исходный массив |
32 |
11 |
75 |
57 |
40 |
21 |
83 |
64 |
|
32 |
|
75 |
|
|
|
|
|
|
11 |
|
57 |
|
|
|
|
|
|
|
40 |
|
75 |
|
|
|
|
|
|
|
21 |
|
57 |
|
|
|
|
|
|
|
75 |
|
83 |
|
|
|
|
|
|
|
57 |
|
64 |
|
Полученный массив |
32 |
11 |
40 |
21 |
75 |
57 |
83 |
64 |
Рис. 8. Метод Шелла (шаг ( )
Исходный массив |
32 |
11 |
40 |
21 |
75 |
57 |
83 |
64 |
|
11 |
32 |
|
|
|
|
|
|
|
32 |
40 |
|
|
|
|
|
|
|
|
21 |
40 |
|
|
|
|
|
|
|
|
40 |
75 |
|
|
|
|
|
|
|
|
57 |
75 |
|
|
|
|
|
|
|
|
75 |
83 |
|
|
|
|
|
|
|
|
64 |
83 |
|
Полученный массив |
11 |
32 |
21 |
40 |
57 |
75 |
64 |
83 |
Рис. 9. Метод Шелла (шаг ( )
