Челночная сортировка
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.
|