Главная страница Случайная лекция Мы поможем в написании ваших работ! Порталы: БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика Мы поможем в написании ваших работ! |
Сортировка Шелла
Begin Фрагмент программы, реализующий сортировку вставкой. К – текущая длина массива, b - переменная для обмена элементов. for i:=2 to k do b:=a[i]; {взятие неотсортированного элемента} J:=1; while (b>a[j])and(j<i) do j:=j+1; {поиск позиции вставки} {цикл для сдвига элементов для освобождения позиции вставки} for l:=i-1 downto j doa[l+1]:=a[l]; a[j]:=b; {вставка элемента на найденную позицию} end; Иллюстрация работы алгоритма. Пусть N=6 – длина массива, i – длина отсортированной части массива, которая постепенно увеличивается.
Принцип метода. Метод назван в честь его изобретателя (D.L.Shell). Он построен на основе метода вставки с минимизацией промежуточных шагов. Рассмотрим иллюстрацию на рис.
Сначала выполняется сортировка элементов, отстоящих друг от друга на 3 позиции. После этого сортируются элементы, отстоящие друг от друга на 2 позиции. Наконец выполняется сортировка соседних элементов. На первый взгляд непонятно, почему этот кажущийся столь сложным метод дает столь хорошие результаты. Непонятно даже, как от вообще работает. Но метод работает. Каждый промежуточный шаг задействует относительно небольшое количество элементов, которые к тому же могут находиться в правильном порядке. Поэтому метод Шелла эффективен и упорядоченность массива возрастает на каждом шаге. Последовательность изменений приращений может меняться. Единственное требование – это равенство последнего приращения 1. Например, хорошо себя зарекомендовала последовательность 9,5,3,2,1, которая использовалась в примере. Наихудшим вариантом является последовательность степеней двойки (это строго математически доказано). Время выполнения сортировки пропорциональной n1,2 при сортировке n элементов.
Дата добавления: 2014-03-11; просмотров: 342; Нарушение авторских прав Мы поможем в написании ваших работ! |