Сортировка парным обменом или нечетно-четная перестановка — Pascal(Паскаль)

type TElement = Integer;
 
{ Сортировка парным обменом }
procedure PairExchSort(var a: array of Integer);
var
  i, j, k: Integer;
  t: TElement
begin
  repeat
    k:=0;
    for i:=0 to 1 do begin
      j:=i;
      while j<High(a) do begin
        if a[j+1]<a[j] then begin
          t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t; Inc(k);
        end;
        Inc(j,2);
      end;
    end;
  until k=0;
end;
 
{ пример использования }
var
  a: array [1..10] of TElement;
  i: Integer;
begin
  Randomize;
  for i:=Low(a) to High(a) do a[i]:=-99+Random(199);
  Write('A ='); for i:=Low(a) to High(a) do Write(a[i]:4); WriteLn;
  PairExchSort(a);
  Write('A''='); for i:=Low(a) to High(a) do Write(a[i]:4); WriteLn;
end.

Leave a Comment