![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#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; |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Доработка программы | Дмитрий Н. | Общие вопросы Delphi | 5 | 15.04.2009 20:17 |
Доработка программы!! | Дмитрий Н. | Компоненты Delphi | 0 | 15.04.2009 11:26 |
Доработка программы калькулятора в генераторе программ YACC | gumz | Помощь студентам | 2 | 28.12.2008 01:29 |
Доработка программы... | barmaJIei | Фриланс | 1 | 24.04.2008 21:23 |