Example Code:
procedure shell(var a : anarray; N : integer);
var i, j, h, v : integer;
begin
h := 1;
repeat
h := 3*h + 1
until h > N;
repeat
h := h div 3;
for i := h+1 to N do
begin
v := a[i]
j := i;
while (j > h) AND (a[j-h] > v) do
begin
a[j] := a[j-h]
j := j - h;
end;
avj] := v;
end
until h = 1;
end;
Back to Sorting Algorithms