Алгоритм на псевдокоде. Сортировка методом Шелла

Сортировка методом Шелла

DO (k=hm, hm-1, … 1)

DO (i=k+1, k+2, … n)

t: = ai, j: =i-k

DO (j>0 и t < aj)

aj+k: = aj

j: = j-k

OD

aj+k: = t

OD

OD

Эффективность метода зависит от выбора значений шагов. Последовательность значений шагов, которая дает наилучшую трудоемкость, пока неизвестна, метод продолжает исследоваться, но существует и часто используется следующая последовательность шагов, предложенная Кнутом.

h1=1, hi=2hi-1+1, i=2,… m, m=

При такой последовательности шагов средний порядок трудоёмкости O(n1.2), n → ∞. Таким образом, метод Шелла существенно быстрее методов с квадратичной трудоемкостью. Метод Шелла не устойчив.

3.3 Варианты заданий

1. Разработать процедуру сортировки массива целых чисел методом прямого включения (язык программирования Паскаль или Си). Правильность сортировки проверить путем подсчета контрольной суммы и числа серий в массиве. Предусмотреть подсчет количества пересылок и сравнений (М и С), сравнить их с теоретическими оценками.

2. Разработать процедуру сортировки массива целых чисел методом Шелла (язык программирования Паскаль или Си). Правильность сортировки проверить путем подсчета контрольной суммы и числа серий в массиве. Предусмотреть подсчет количества пересылок и сравнений (М и С), сравнить их с теоретическими оценками.

3. Сравнить метод прямого включения и метод Шелла по количеству сравнений и пересылок для различных типов массивов. Разработать процедуру построения графика зависимости величин М и С от размера массива.

4. Сравнить метод прямого включения и метод Шелла с ранее расмотренными методами сортировки по количеству сравнений и пересылок для различных типов массивов. Разработать процедуру построения графика зависимости величин М и С от размера массива

5. Экспериментально определить подходящую последовательность шагов для метода Шелла.

6. Опытным путем определить константы в выражениях оценки для количества сравнений и пересылок в методе Шелла.

4. Быстрые методы сортировки массивов

4.1 Пирамидальная сортировка

Пирамидальная сортировка основана на алгоритме построения пирамиды. Последовательность ai, ai+1,…,ak называется (i,k)-пирамидой, если неравенство

aj≤min(a2j, а2j+1) (*)

выполняется для каждого j, j=i,…,k для которого хотя бы один из элементов a2j, a2j+1 существует.

Например, массив А является пирамидой, а массив В ¾ не является.

А=(а2 , а3 , а4 , а5 , а6 а7 , а8 )=(3, 2, 6, 4, 5, 7)

В=(b1, b2, b3, b4, b5, b6, b7)=(3, 2, 6, 4, 5, 7)


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: