
19.11.2009, 02:45
|
|
Участник форума
Регистрация: 20.12.2008
Сообщений: 130
Провел на форуме: 436500
Репутация:
11
|
|
Сообщение от Vinsik
Привет всем!
Спасайте срочно пожалуйста!)
Паскаль:
Упорядочить массив А(20) методом слияния.
Код:
Program SlivSort;
const arrsize= 20;
Var A,B : array[1..20] of integer;
N,i : integer;
Procedure Sliv(p,q : integer); {процедура сливающая массивы}
Var r,i,j,k : integer;
Begin
r:=(p+q) div 2;
i:=p;
j:=r+1;
for k:=p to q do
if (i<=r) and ((j>q) or (a[i]<a[j])) then
begin
b[k]:=a[i];
i:=i+1;
end
else
begin
b[k]:=a[j];
j:=j+1;
end ;
for k:=p to q do
a[k]:=b[k];
End;
Procedure Sort(p,q : integer); {p,q - индексы начала и конца сортируемой части массива}
Begin
if p<q then {массив из одного элемента тривиально упорядочен}
begin
Sort(p,(p+q) div 2);
Sort((p+q) div 2 + 1,q);
Sliv(p,q);
end;
End;
Begin
{Определение размера массива A - N) и его заполнение}
randomize;
for i:= 1 to arrsize do begin
A[i]:= random(50);
write(A[i],' ');
end;
Writeln;
{запуск сортирующей процедуры}
Sort(1,arrsize);
{Вывод отсортированного массива A}
for i:= 1 to arrsize do write(a[i],' ');
readln;
End.
|
|
|