Отсортировать массив челночным способом — 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.

Leave a Comment

+ 34 = 40