Ecco una procedura che può ordinare un array di n interi utilizzando il metodo Shell Sort:
Procedure Shell_Sort_Rec (Var t: TAB; n,h : integer);
Var aux,i : integer;
begin
If h > 0 Then
Begin
If n > h Then
begin
Shell_Sort_Rec (t,n - h,h);
If t[n] < t[n - h] Then
Begin
aux:= t[n];
i := n;
Repeat
t[i] := t[i - h];
i := i - h;
Until (i = h) Or (aux > t[i - h]);
t[i] := aux;
End;
End;
Shell_Sort_Rec (t,n,h Div 3);
End;
End;
Nota: