Простой пример сортировки 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.
Теги:
сортировка, массив, слияние
Добавлено: 15 Сентября 2013 02:48:00 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...