ShakeSort

Třídění přetřásáním

 

Tento algoritmus vychází z bublinkového třídění, které zlepšuje tak, že probublávájí střídavě malá čísla na levý okraj a velká čísla na pravý okraj.

 

Takto vypadá Shakesort v Delphi

procedure Swap(var X, Y : integer);
var Temp : integer;

begin
Temp := X;
X := Y;
Y := Temp
end;

 

procedure ShakeSort(var X : ArrayType; N : integer);
var L,R,K,J : integer;

begin
L := 2;
R := N;
K := N;

repeat
for J := R downto L do
if (X[J] < X[J - 1]) then
begin
Swap(X[J], X[J - 1]);
K := J
end;
L := K + 1;
for J := L to R do
if (X[J] < X[J - 1]) then
begin
Swap(X[J], X[J - 1]);
K := J
end;
R := K - 1;
until L >= R

end;