Шейкерная сортировка - челночная

Этот алгоритм – модификация пузырьковой сортировки. Отличие в том, что в сортировке обменом проходы осуществлялись только в одном направлении, то здесь направление каждый раз меняется.

Пример: Шейкерная сортировка по возрастанию массива 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.
Онлайн всего: 16
Гостей: 16
Пользователей: 0

STUDLAB Сообщить про опечатку на сайте