Отсортировать массив челночным способом

code: #pascal
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.      
Поделиться:

Похожие статьи: