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.

1 nhận xét: