{ FarmSort – «Фермерская» сортировка }

procedure FarmSort(var arg: TNumbers);

var L, R, T: Integer;

begin

      for L := 1 to CSize-1 do

      for R := CSize downto L+1 do begin

      C1:=C1+1; { подсчет сравнений }

      if arg[L] > arg[R] then begin

      C2:=C2+1; { подсчет перестановок }

      T:= arg[L]; arg[L]:= arg[R]; arg[R]:= T;

      end;

      end;

end;

      { QuickSort – Быстрая сортировка }

procedure QuickSort(var arg: TNumbers; aL, aR: Integer);

var

L, R, Mid, T: Integer;

begin

L:= aL; R:= aR;

Mid:= (arg[L] + arg[(L + R) div 2] + arg[R]) div 3;

repeat

      while arg[L] < Mid do begin L:=L+1; C1:=C1+1 end;

      while arg[R] > Mid do begin R:=R-1; C1:=C1+1 end;

      if L <= R then begin

      if arg[L]>arg[R] then begin

      C2:=C2+1; { подсчет перестановок }

      t:= arg[L]; arg[L]:= arg[R]; arg[R]:= t;

      end;

      L:=L+1; R:=R-1;

      end;

      until L > R;

      if R > aL then QuickSort(arg, aL, R);

      if L < aR then QuickSort(arg, L, aR);

end;

const CFName = 'P_43_3.out';

var i: integer;

F: text;

begin

Assign(F,CFName); Rewrite(F);

for i:=1 to CSize do Arr0[i]:=1+Random(10000);

Writeln(F, 'Размер массива = ', CSize);

Writeln(F, 'Алгоритм       Количество Количество');

Writeln(F, 'сортировки сравнений перестановок');

C1:=0; C2:=0;       { очистить счетчики }

Arr:= Arr0;       { заполнить сортируемый массив }

BubbleSort(Arr);

Writeln(F, 'Пузырьковая:', C1:12:0, C2:12:0);

C1:=0; C2:=0;       { очистить счетчики }

Вы читаете Песни о Паскале
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату