Слияние отсортированных массивов в отсортированный на Pascal
Слияние отсортированных массивов в отсортированный...
Способ 1.
Способ 2. С барьерным элементом
Способ 1.
const
aN = 10; // Количество элементов в массиве a
bN = 6; // Количество элементов в массиве b
cN = aN + bN; // Количество элементов в массиве c
var
a: array [1..aN] of integer := (1,5,12,15,47,89,98,112,171,180);
b: array [1..bN] of integer := (13,44,58,71,73,111);
c: array [1..сN] of integer;
ai,bi,ci: integer;
begin
writeln('Элементы массива a: ');
for var i:=1 to aN do
write(a[i],' ');
writeln;
writeln('Элементы массива b: ');
for var i:=1 to bN do
write(b[i],' ');
writeln;
ci := 1;
ai := 1;
bi := 1;
while (ai<=aN) and (bi<=bN) do
begin
if a[ai]<b[bi] then
begin
c[ci] := a[ai];
ai += 1;
end
else
begin
c[ci] := b[bi];
bi += 1;
end;
ci += 1;
end;
while ai<=aN do
begin
c[ci] := a[ai];
ai += 1;
ci += 1;
end;
while bi<=bN do
begin
c[ci] := b[bi];
bi += 1;
ci += 1;
end;
writeln('Результат слияния: ');
for var i:=1 to cN do
write(c[i],' ');
end.
Способ 2. С барьерным элементом
const
aN = 10; // Количество элементов в массиве a
bN = 6; // Количество элементов в массиве b
cN = aN + bN; // Количество элементов в массиве c
var
a: array [1..aN+1] of integer := (1,5,12,15,47,89,98,112,171,180,0); // последний элемент - барьерный
b: array [1..bN+1] of integer := (13,44,58,71,73,111,0);
c: array [1..cN] of integer;
ai,bi,ci: integer;
begin
writeln('Элементы массива a: ');
for var i:=1 to aN do
write(a[i],' ');
writeln;
writeln('Элементы массива b: ');
for var i:=1 to bN do
write(b[i],' ');
writeln;
a[aN+1] := integer.MaxValue; // барьерный элемент - самый большой
b[bN+1] := integer.MaxValue;
ci := 1;
ai := 1;
bi := 1;
for ci:=1 to cN do
if a[ai]<b[bi] then
begin
c[ci] := a[ai];
ai += 1;
end
else
begin
c[ci] := b[bi];
bi += 1;
end;
writeln('Результат слияния: ');
for var i:=1 to cN do
write(c[i],' ');
end.
10.02.2015, 10:44 -
Категория: Статьи » Программирование » Pascal