Показать сообщение отдельно

  #10  
Старый 19.11.2009, 02:45
Linkus
Участник форума
Регистрация: 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.
 
Ответить с цитированием