Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовая работа по алгоритмам.docx
Скачиваний:
20
Добавлен:
14.09.2019
Размер:
112.76 Кб
Скачать

2.3 Описание сортировки Шелла

Сортировка Шелла это, по сути, модификация схем сортировки других алгоритмов. Фактически для сортировки элементов используются другие алгоритмы, такие как: пузырьком, вставками, выбором и т.д. Но только эти алгоритмы применяются не ко всей исходной последовательности, а к ее частям.

Сначала в исходной последовательности сортируются между собой элементы, отстоящие друг от друга на расстоянии n/2 элементов, затем на расстоянии n/4 и т.д. до тех пор пока не получим 2 последовательности, элементы которых отстоят друг от друга на расстоянии 1-го элемента. После этого делаем сортировку этой полученной последовательности выбранным методом и на выходе имеем уже полностью отсортированную последовательность.

В качестве самой сортировки элементов в группе можно использовать различные алгоритмы простой сортировки: вставками, выбором, пузырьком и прочие. Но, если подумать, самым оптимальным вариантом в данном случае - будет прогонка только лишь 1-ой итерации пузырькового метода. При использовании пузырькового подхода мы в самом алгоритме сортировки Шелла проходимся по каждому элементу каждой группы и меняем его местами со следующим(из его же группы конечно) если он его больше (в случае сортировки по возрастанию конечно).

В результате, мы к элементам каждой группы применим как бы 1 проход пузырьковой сортировки. Остальные проходы - делать не нужно: это будет делаться на каждой следующей итерации основного нашего алгоритма шелла, поскольку шаг d разбиения на группы уменьшается. На заключительной сортировке всей последовательности метод пузырьком должен отработать полностью. Либо же следует вызвать сортировку вставками, либо выбором.

Эффективность метода.

Объясняется тем, что при каждом проходе используется относительно небольшое число элементов. Или элементы массива находятся в относительном порядке, а упорядоченность увеличивается при каждом новом просмотре данных.

Недостаток метода.

Не всегда можно сказать, что алгоритм дает хороший результат. Не всегда можно быть уверенным в том, что получится хорошо отсортированный массив. Расстояние между элементами может изменяться по-разному. Основное условие: последний шаг должен равняться 1. Наиболее выгодные результаты дают шаги: 9,5,3,2,1. Внутренний цикл алгоритма имеет 2 основных условия проверки: х0 и j<=count – необходимо для того, чтобы предотвратить выход за пределы массива, эта проверка ухудшает алгоритм. Основным является нахождение элементов k­t­,k­t-1­,­­k­1­. Свойства:

  • K­t­=1

  • K­t­>k­t-1­, для всех элементов t

  • K­t ­не должны быть кратны друг другу

Эффективность сортировки Шелла.

Имеет сложность n3/2. Значение чуть хуже n*logn. Но, не смотря на это, сортировка относится к улучшенным методам.

Пример: 12,3,6,11,52,34,40,7,55,24,70.

Я сейчас покажу пример, который будет полностью описан с картинками.