Шейкерная сортировка - челночная
Этот алгоритм – модификация пузырьковой сортировки. Отличие в том, что в сортировке обменом проходы осуществлялись только в одном направлении, то здесь направление каждый раз меняется.
Пример: Шейкерная сортировка по возрастанию массива A чисел.
Пример: Шейкерная сортировка по возрастанию массива A чисел.
program Shaker;
var A:array[1..100] of integer;
N,i,k,x,j,d : integer;
begin
write('количество элементов массива ');
read(N);
for i:=1 to n do read(A[i]);
d:=1; i:=0;
for k:=n-1 downto 1 do { k - количество сравниваемых пар }
begin
i:=i+d;
for j:=1 to k do
begin
if (A[i]-A[i+d])*d>0 then
{меняем местами соседние элементы}
begin x:=A[i]; A[i]:=A[i+d]; A[i+d]:=x;
end;
i:=i+d;
end;
d:=-d;
{меняем направление движения на противоположное}
end;
for i:=1 to n do write(A[i],' '); {упорядоченный массив}
end.