Сортировка Шелла — различия между версиями
Строка 1: | Строка 1: | ||
+ | {| class="wikitable" align="center" style="color: red; background-color: black; font-size: 56px; width: 800px;" | ||
+ | |+ | ||
+ | |-align="center" | ||
+ | |'''НЕТ ВОЙНЕ''' | ||
+ | |-style="font-size: 16px;" | ||
+ | | | ||
+ | 24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян. | ||
+ | |||
+ | Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием. | ||
+ | |||
+ | Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей. | ||
+ | |||
+ | Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить. | ||
+ | |||
+ | ''Антивоенный комитет России'' | ||
+ | |-style="font-size: 16px;" | ||
+ | |Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению. | ||
+ | |-style="font-size: 16px;" | ||
+ | |[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки]. | ||
+ | |} | ||
+ | |||
'''''Сортировка Шелла''''' (англ. Shellsort) — алгоритм сортировки, являющийся усовершенствованным вариантом [[Сортировка вставками|сортировки вставками]]. | '''''Сортировка Шелла''''' (англ. Shellsort) — алгоритм сортировки, являющийся усовершенствованным вариантом [[Сортировка вставками|сортировки вставками]]. | ||
Версия 07:59, 1 сентября 2022
НЕТ ВОЙНЕ |
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян. Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием. Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей. Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить. Антивоенный комитет России |
Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению. |
meduza.io, Популярная политика, Новая газета, zona.media, Майкл Наки. |
Сортировка Шелла (англ. Shellsort) — алгоритм сортировки, являющийся усовершенствованным вариантом сортировки вставками.
Алгоритм
Каждый проход в алгоритме характеризуется смещением
, таким, что сортируются элементы отстающие друг от друга на позиций. Шелл предлагал использовать , , , . Возможны и другие смещения, но всегда.- Начало.
- Шаг 0. .
- Шаг 1. Разобьем массив на списки элементов, отстающих друг от друга на . Таких списков будет .
- Шаг 2. Отсортируем элементы каждого списка сортировкой вставками.
- Шаг 3. Объединим списки обратно в массив. Уменьшим . Если неотрицательно — вернемся к шагу 1
- Конец.
Пример
Возьмем массив
56, 43, 12, 78, 42, 93, 16, 55 и смещения предложенные Шеллом.До | После | Описание шага |
---|---|---|
Шаг 1 | ||
56, 43, 12, 78, 42, 93, 16, 55 | 56, 42 43, 93 12, 16 78, 55 | Разбили массив на 4 списка. |
Шаг 2 | ||
56, 42 43, 93 12, 16 78, 55 | 42, 56 43, 93 12, 16 55, 78 | Отсортировали элементы списков сортировкой вставками. Количество обменов 2. |
Шаг 3 | ||
42, 56 43, 93 12, 16 55, 78 | 42, 43, 12, 55, 56, 93, 16, 78 | Объединили списки в массив. Уменьшаем | на 1. , перейдем к шагу 1.
Шаг 1 | ||
42, 43, 12, 55, 56, 93, 16, 78 | 42, 12, 56, 16 43, 55, 93, 78 | Разбили массив на 2 списка. |
Шаг 2 | ||
42, 12, 56, 16 43, 55, 93, 78 | 12, 16, 42, 56 43, 55, 78, 93 | Отсортировали элементы списков сортировкой вставками. Количество обменов 4. |
Шаг 3 | ||
12, 16, 42, 56 43, 55, 78, 93 | 12, 43, 16, 55, 42, 78, 56, 93 | Объединили списки в массив. Уменьшаем | на 1. , перейдем к шагу 1.
Шаг 1 | ||
42, 43, 12, 55, 56, 93, 16, 78 | 42, 43, 12, 55, 56, 93, 16, 78 | Разбили массив на 1 список. |
Шаг 2 | ||
42, 43, 12, 55, 56, 93, 16, 78 | 12, 16, 42, 43, 55, 56, 78, 93 | Отсортировали элементы списков сортировкой вставками. Количество обменов 7. |
Шаг 3 | ||
12, 16, 42, 43, 55, 56, 78, 93 | 12, 16, 42, 43, 55, 56, 78, 93 | Объединили списки в массив. Уменьшаем | на 1. .
Анализ метода Шелла
Понятно, что сложность алгоритма зависит от оптимальности выбора набора
. Массив, где для любого верно , назовем упорядоченным.
Теорема (Д.Х. Ханту): |
Среднее число инверсий в упорядоченной перестановке множества 1, 2, , равно
, где и |
Следующая лемма является следствием теоремы выше.
Лемма: |
Если последовательность смещений , удовлетворяют условию при , то среднее число операций равно
, где , , , а функция определяется формулой из теоремы. |
Доказательство данных теоремы и леммы изложено в книге, предложенной к прочтению.
В первом приближении функция
равна . Следовательно для двух проходов будет примерно пропорционально . Поэтому наилучшее значение равно приблизительно , при таком выборе среднее время сортировки пропорционально .Таким образом, применяя метод Шелла и используя всего 2 прохода, можно сократить время по сравнению с методом простых вставок с
до .Используя приведенные выше формулы, порог
преодолеть невозможно, но если убрать ограничение его можно преодолеть.
Теорема (А.А. Папернов, Г.В. Стасевич): |
Если при , то время сортировки есть . |
Доказательство: |
Достаточно найти оценку числа перезаписей | на проходе, такую, что бы . Для первых проходов при можно воспользоваться оценкой , а для последующих проходов , следовательно .
Важно, что эта теорема дает оценку времени выполнения алгоритма в худшем случае.
Дальнейшее улучшение было получено Волганом Праттом. Если все смещения при сортировке выбираются из множества чисел вида
, меньших , то время выполнения алгоритма будет порядка .См. также
Источники информации
- Дональд Кнут — Искусство программирования, том 3. Сортировка и поиск = The Art of Computer Programming, vol.3. Sorting and Searching. — 2-е изд. — М.: «Вильямс», 2007. — 824 с. — ISBN 5-8459-0082-4
- Сортировка Шелла — Википедия