Быстрая сортировка, необходим счетчик перестановок - PascalABC.NET
Формулировка задачи:
Куда в этой программе неоходимо вставить счетчик перестановок? и потом вывести его.
Решение задачи: «Быстрая сортировка, необходим счетчик перестановок»
textual
Листинг программы
program n1;
const
n = 7;
var
i, j, c, k4: integer;
a: array[1..n] of integer;
var
Counter: Integer := 0;
procedure qSort(nStart, nEnd: integer);
var
L, R, c, X, k3, k4: integer;
begin
k3 := 0;
if nStart >= nEnd then Exit;
L := nStart;
R := nEnd;
X := A[(L + R) div 2];
while L <= R do
begin
while a[L] < X do L := L + 1;
while a[R] > X do R := R - 1;
if L <= R then begin
c := A[L]; a[L] := A[R];A[R] := c; Inc(Counter); // В момент совершения перестановки и увеличиваешь счетчик
L := L + 1;R := R - 1;
end;
end;
qSort(nStart, R);
qSort(L, nEnd);
end;
begin
writeln('Введите массив');
for i := 1 to n do
read(a[i]);
qSort(1, n);
for j := 1 to n do
write(a[j], ' '); writeln;
writeln('Перестановок:', Counter);
end.