Program fd;
type
DataArray = array [1 .. 100] of integer;
DataItem = integer;
var
A: DataArray;
i, j, n, NN: integer;
procedure Shaker(var item: DataArray; count: integer);
var
j, k, l, r: integer;
x: DataItem;
begin
l := 2;
r := count;
k := count;
repeat
for j := r downto l do
if item[j - 1] > item[j] then
begin { обмен }
inc(NN);
x := item[j - 1];
item[j - 1] := item[j];
item[j] := x;
k := j;
end;
l := k + 1;
for j := l to r do
if item[j - 1] > item[j] then
begin { обмен }
inc(NN);
x := item[j - 1];
item[j - 1] := item[j];
item[j] := x;
k := j;
end;
r := k - 1;
until l > r end; { конец челночной сортировки }
begin
NN := 0;
write('razmer N= ');
readln(n);
for i := 1 to n do
A[i] := random(20);
writeln('Massiv:');
for i := 1 to n do
write(A[i], ', ');
Shaker(A, n);
writeln;
writeln('OTSORTIROVANNII Massiv:');
for i := 1 to n do
write(A[i], ', ');
writeln;
writeln('Cislo Obmenov: ', NN);
readln;
end.