Var longueur,n,i,j,valeur :Entier
tri_shell(tableau T)
debut
longueurtaille[T]
n0;
tantque n < longueur faire
n(3*n+1) //calcul du plus grand décalage possible
fintantque
tantque n<>0 faire //tantque le décalage possible est non nul
n(n/3)
pour i de n à longueur-1 (pas=n)faire
valeur T[i] //valeur à décaler (éventuellement)
ji
tantque(j>n-1)et(T[j-n]>valeur)
T[j]T[j-n] //décalage des valeurs avec un pas de n
Jj-n
fintantque
T[j]valeur
Finpour
Fintantque
Fin