Bài tập: gộp 2 mảng tăng dần thành một mảng tăng dần
Đề bài : Cho mảng a,b gồm m,n phần tử được sắp xếp theo thứ tự tăng dần. Gộp 2 mảng a,b thành mảng c tăng dần ( không dùng thuật toán sắp xếp cho mảng c )
Bài giải :
type mang=array[0..1000] of integer;
var a,b,c:mang;
i,j,k,t,m,n:integer;
begin
write('nhap vao m ');
readln(m);
for i:=1 to m do
a[i]:=random(100)-random(100);
for j:=m downto 2 do
for i:=1 to j-1 do
if a[i] > a[i+1] then
begin
t:=a[i];
a[i]:=a[i+1];
a[i+1]:=t;
end;
write('nhap vao n ');
readln(n);
for i:=1 to n do
b[i]:=random(100)-random(100);
for j:=n downto 2 do
for i:=1 to j-1 do
if b[i] > b[i+1] then
begin
t:=b[i];
b[i]:=b[i+1];
b[i+1]:=t;
end;
j:=m;
k:=n;
if a[1]<b[1] then b[0]:=a[1]-1 else a[0]:=b[1]-1;
for i:=m+n downto 1 do
if a[j] > b[k] then
begin
c[i]:=a[j];
j:=j-1;
end
else begin
c[i]:=b[k];
k:=k-1;
end;
writeln('mang A: ');
for i:=1 to m do write(a[i]:5);
writeln;
writeln('mang B: ');
for i:=1 to n do write(b[i]:5);
writeln;
writeln('mang C: ');
for i:=1 to m+n do write(c[i]:5);
end.
Nhận xét này đã bị tác giả xóa.
Trả lờiXóa