IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> сортировки и их сравнение, гляньте плиз.. надо бы посрочнее
Zq@r
сообщение 3.06.2005 12:08
Сообщение #1


Гость






: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;

procedure bar; begin
gotoxy (ex, cy) ;
textcolor(white) ;
write(#221) ;
cx:=cx+l;
end;
procedure complete;
begin
write (#7) ;
gotoxy(4,15);
clreol;
gotoxy (20,22);
textcolor(white);
writeln ('YA VIPOLNIL!!!! ');
readln;
end;
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.




вообщем что то не пашит помогите плиз
:fire:
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.07.2025 17:02
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"