Простой пример сортировки 2х упорядоченных массивов слиянием
uses crt;
var a,b,c:array[1..500] of integer;
n,m,i,j,k:integer;
begin
clrscr;
write('n=');readln(n);
write('m=');readln(m);
writeln('Massiv A:');
for i:=1 to n do
begin
a[i]:=2*i+1;{введем нечетные числа}
write(a[i],' ');
end;
writeln;
writeln('Massiv B:');
for i:=1 to m do
begin
b[i]:=2*i;{введем четные числа}
write(b[i],' ');
end;
writeln;
i:=1; j:=1; k:=1; {устанавливаем счётчики}
while (i<=n) or (j<=m) do {пока не дошли до конца каждого из массивов}
begin
if (i<=n) and (j<=m) then {если оба массива ещё не закончились}
begin
if a[i]<b[j] then {то пишем в новый массив меньший из текущих элементов}
begin
c[k]:= a[i];
inc (i); {переходим к следующему элементу соответствующего массива}
inc (k); {переходим к следующему элементу конечного массива}
end
else
begin
c[k]:= b[j];
inc (j);
inc (k);
end
end
else if j>m then {иначе один из массивов уже закончился}
begin {и мы пишем из того, в котором ещё есть элементы}
c[k]:= a[i];
inc (i);
inc (k);
end
else if i>n then
begin
c[k]:= b[j];
inc (j);
inc (k);
end;
end;
writeln('Massiv C:');
for i:=1 to m+n do
write(c[i],' ');
readln
end.
Комментарии:
Нету комментариев для вывода...