1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code]. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
сортировки и их сравнение, гляньте плиз.. надо бы посрочнее
:p2: народ есть задачка! но что то не клеиться! вот собсвенна она :
Исследовать число перемещений элементов в массиве для следующих методов сортировок: 1) шейкерная сортировка; 2) сортировка с помощью бинарных вставок. Анализ числа перемещений произвести на массивах размерностью 200, 800, 1000, 5000, 10000, а также на следующих типах массивов: 1) случайный; 2) сортированный; 3) частично-сортированный; 4) перевернутый. Смотрим что быстрее Вычисления проводятся несколько раз; затем искомые результаты выводятся на экран в таблице.
unit sorts; {модуль сортировки} interface uses crt; const c=5; a:array[1..c] of integer=(200,800,1000,5000,10000); g=10000; var z:array[1..g] of integer; cpl, cp2:array[1..5,1..4] of longint; u,v,w,kx,ky:byte; p,q,Mminl,Mavel,Mmaxl,Mave2,Mmax2,t:longint; i,k,r,l,m,j,x,n:integer; procedure binary_insert; procedure shaker_sort; procedure virt; implementation procedure binary_insert; begin q:=0; n:=a[u]; for i:=2 to n do begin x:=z[i]; q:=q+l; r:=i; l:=1; while l<r do begin m:=(l+r) div 2; if z[m]<x then l:=m+l else r:=m; end; for j:=i downto r+1 do begin z[j] :=z [j-1] ; q:=q+l; end; z[r]:=x; q:=q+l; end; cpl[u,v]:=q; end; procedure shaker_sort; begin p:=0; n:=a[u]; l:=2; r:=n ; k:=n ; repeat for j:=r downto l do if z[j-l]>z[j] then begin x:=z [j-1] ; z[j-l]:=z[j] ; z[j]:=x; k:=j; p:=p+3; end; l:=k+l; for j:=l to r do if z[j-l]>z[j] then begin x:=z[j-1] ; z[j-1]:=z[j] ; z[j]:=x ; k:=j; p:=p+3; end; r:=k-1; { nenenennenenenenn 1} until l>r; cp2[u,v]:=p; end; end
unit massive; {муодуль с процелурами длдя задание исходных данных} interface uses sorts, crt; procedure rand_mas; procedure sort_mas; procedure obr__mas; procedure sort_part_mas; implementation procedure rand_mas; begin randomize; for i:=l to a[u] do z [i]:=random(100) -50; end; procedure sort_mas; begin for i:=l to a[u] do z[i]:=i; end; procedure obr_mas; begin for i:=l to a[u] do z[i]:=a[u]+l-i; end; procedure sort_part_mas ; begin for i:=l to a[u] do begin if (i mod 40=0) then for k:=i down to i-10 do z[k]:=k else z[i]:=random(50)-100; end; end; END.
unit outme; {модуль вывод результатов в таблице} interface uses crt,sorts; var ex,cy:byte; procedure tabliza; procedure out_cp; procedure out; procedure pod; procedure process; procedure bar; procedure complete; implementation procedure tabliza; begin clrscr; gotoxy (1 f 0) ; textcolor(yellow); table{-таблица-} end; procedure out_cp; begin textcolor(red); write (cpl[i,j]); gotoxy (kx,ky+2); textcolor(green); write (cp2[i,j]); end; procedure out; {таблица} begin gotoxy (2,1) ; i:=1; ky:=5; while i<=5 do begin j:=1; kx:=9; while j<=4 do begin gotoxy (kx,ky); out_cp; j:=j+1; kx:=kx+ll; end; i:=i+l; ky:=ky+4; end; end; procedure pod; begin gotoxy (10, wherey+5) ; textcolor(white); write ('table of sorts.'); gotoxy(25,wherey); write ( 'sort ( / ) '); gotoxy(31,wherey); textcolor (red+blink); write('by binary insert'); gotoxy(48,wherey); textcolor(green+blink); write('by shaker sort'); textcolor(yellow); end; procedure process; begin textcolor (blue); gotoxy (6,1 7) ; table{-табличка-} ex:=7; cy:=18; gotoxy(4,15); textcolor(white+blink); writeln('rabotayu........jdite..... '); end;
{ Основная программа:} program shaker_binary; uses massive,sorts,crt,outme; BEGIN textbackground(black) ; clrscr; process; for w:=l to 2 do begin if w:=2 then for i:=l to g do z[i]:=0; for u:=l to с do for v:=l to c1044-1 do begin case v of 1: begin sort_mas; bar end; 2: begin obr__mas; bar end; 3: begin rand__mas ; bar end; 4: begin sort__part_mas; bar end; end; if w:=l then binary_insert else shaker_sort; end; end; complete; gotoxy(2,2) ; tabliza; out; pod; cap; readln; END.