Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2009, 11:26   #1
Дмитрий Н.
 
Регистрация: 22.02.2009
Сообщений: 7
По умолчанию Доработка программы!!

Прошу помочь в таком вопросе? Мне надо оформить три "внутренней" сортировки в делфи, где выбиралось бы каким методом сортировать, + надо чтобы показывало в StringGrid разноцветными цветами какие элементы меняются местами.!!!!Прошу помочь в этом вопросе!!!!
""""""""""""""""""""""""""""""""""" "{Шейкер сортировка}
procedure ShakerSort(n:Integer);
Var
j,k,l,r,item:Integer;
begin
l:=2;
r:=n;
k:=n;
repeat
for j:=r downto l do
if a[j-1]>a[j] then
begin
item:=a[j-1];
a[j-1]:=a[j];
a[j]:=item;
k:=j;
end;
l:=k+1;
for j:=l to r do
if a[j-1]>a[j] then
begin
item:=a[j-1];
a[j-1]:=a[j];
a[j]:=item;
k:=j;
end;
r:=k-1;
until l>r;
end;
""""""""""""""""""""""""""""""""""" ""{Сортировка Шелла}
procedure ShellSort(n:Integer);
Const h:Array[1..4] of Integer=(8,4,2,1); {h - массив смещений}
Var
i,j,l,r,w,x:Integer;
begin
for r:=1 to 4 do
begin
l:=h[r];
w:=-l; {"s" - место барьера}
for i:=l+1 to n do {выбираем элемент из входной сортируемой группы}
begin
x:=a[i];
j:=i-l; {"j"-индекс элемента сортируемой группы}
if w=0 then w:=-l;
w:=w+1;
a[w]:=x; {... устанавливаем величину барьера }
while x<a[j] do
begin
a[j+l]:=a[j]; {сдвигаем элементы внутри сортируемой группы}
j:=j-l;
end;
a[j+l]:=x; {вставка элемента}
end;
end;
end;
""""""""""""""""""""""""""""""""""" """"{Пирамидальная сортировка}
»procedure SortHeep(n:Integer);
Var
x,l,r,m:Integer;
procedure Sift; {Просеивание элементов}
Var
i,j :Integer;
flag:Boolean;
begin
i:=l;
j:=2*i;
x:=a[i];
flag:=True; {Досрочный выход из цикла}
while (j<=r)and(flag) do
begin
if (j<r)and(a[j]<=a[j+1]) then j:=j+1;
if x>a[j] then flag:=False
else
begin
a[i]:=a[j];
i:=j;
j:=2*i;
end;
end;
a[i]:=x;
end; {Конец Sift}
begin {Построение пирамиды}
l:=(n div 2)+1;
r:=n;
while l>1 do
begin
l:=l-1;
Sift;
end;
while r>l do {Просеивание x}
begin
x:=a[l];
a[l]:=a[r];
a[r]:=x; {a[r] - верхний элемент пирамиды}
r:=r-1;
Sift;
end;
end;
Дмитрий Н. вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Доработка программы Дмитрий Н. Общие вопросы Delphi 5 15.04.2009 20:17
Доработка программы калькулятора в генераторе программ YACC gumz Помощь студентам 2 28.12.2008 01:29
доработка алгоритма... Sota Помощь студентам 2 13.06.2008 15:45
Доработка программы... barmaJIei Фриланс 1 24.04.2008 21:23