Ahí lo tienes:
Código :
function shellsort(a,cnt){
var g= [1,2,5,13,34,89,233,610,1597,4181,10946];
for (var n=10;n>=0;n--){
k=g[n];
for (var i=k;i<cnt;i++){
var temp=a[i];
for (var j=(i-k);j>=0 && a[j] > temp;j-=k) a[j+k]=a[j];
a[j+k]=temp;
}
}
}
a=[9,84,30,5,41,6,7,2,1,24,17,11]
shellsort(a,6);
trace (a); //5,6,9,30,41,84,7,2,1,24,17,11 Los numeros de la serie g (gaps) son el resultado de la suma de todos los anteriores mas el último. Es más eficaz que la que cita la wikipedia ( y si quieres una demostración .....)

PD. Aunque me parece una vanalidad........son vestigios de los antiguos lenguajes para implementar búsquedas. AS usa con eficacia sus funciones sort y resulta evidente que es facil hacer una shell con esas funciones nativas. La velocidad de proceso es casi similar........con pequeña ventaja en arrays <2000 elementos para la sort de AS.