Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Результат работы

Реализация алгоритма УлШелл

 

Ради большей наглядности мы пожертвовали эффективностью и воспользовались алгоритмом ПрВст, а не ПрВстБар или БинВст. Дотошному же читателю предоставляется возможность самостоятельно улучшить предлагаемую реализацию:

 

program shell_sort;

const n=18;

a:array[1..n] of integer

=(18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1);

var ii,m,x,s,p,t,k,r,i,j: integer;

begin

t:= trunc(ln(n)/ln(2));

repeat

t:= t-1;

k:= (1 shl t)-1;

p:= n mod k;

s:= n div k;

if p=0 then

p:= k

else

s:= s+1;

writeln(k,'-сортировка');

for i:= 1 to k do {берем и длинные, и короткие подпоследовательности}

begin

if i= p+1 then s:= s-1; (для коротких - уменьшаем длину}

for j:= 1 to s-1 do {метод ПрВст с шагом k}

if a[i+(j-1)*k]>a[i+j*k] then begin

x:= a[i+j*k];

m:= i+(j-1)*k;

while (m>0) and (a[m]>x) do begin

a[m+k]:= a[m];

m:= m-k;

end;

a[m+k]:= x;

end;

for ii:= 1 to n do

write(a[ii],' ');

writeln;

end;

until k=1;

end.

 

 

7-сортировки

4 17 16 15 14 13 12 11 10 9 8 7 6 5 18 3 2 1

4 3 16 15 14 13 12 11 10 9 8 7 6 5 18 17 2 1

4 3 2 15 14 13 12 11 10 9 8 7 6 5 18 17 16 1

4 3 2 1 14 13 12 11 10 9 8 7 6 5 18 17 16 15

4 3 2 1 7 13 12 11 10 9 8 14 6 5 18 17 16 15

4 3 2 1 7 6 12 11 10 9 8 14 13 5 18 17 16 15

4 3 2 1 7 6 5 11 10 9 8 14 13 12 18 17 16 15

 

3-сортировки

1 3 2 4 7 6 5 11 10 9 8 14 13 12 18 17 16 15

1 3 2 4 7 6 5 8 10 9 11 14 13 12 18 17 16 15

1 3 2 4 7 6 5 8 10 9 11 14 13 12 15 17 16 18

 

1-сортировка

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

 

<== предыдущая лекция | следующая лекция ==>
Алгоритм УлШелл | Эффективность алгоритма УлШелл
Поделиться с друзьями:


Дата добавления: 2013-12-13; Просмотров: 220; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.