Iz MaFiRaWiki
/* Shell sort - algoritem na osnovi navadnega vstavljanja, ki uredi dane elemente tabele tako, da v večih fazah pregleda
tabelo,uredi podatke v skupinah, pri čemer v isto skupino spadajo elementi,ki so določeno število mest narazen.*/
Public static void shellSort(int[] tab)
{
int k=1; // izračun koraka za prvo fazo
while (3*k+1 < tab.length) // določimo največji korak, ki ga lahko izvedemo znotraj tabele (1, 4, 13, 40, 121, ...)
k=3*k+1;
-
while (k>0) // zanka za faze
{
for(int i = k; i < tab.length; i++)
{
int x = tab[i]; // izberemo zadnji element skupine
int j = i-k;
while (j>=0 && x<(tab[j])) // če je element x v skupini manjši od tistega pred njim
{
tab[j+k] = tab[j]; // ju zamenjamo
j = j-k;
}
tab[j+k] = x; // nov trenutni element
}
k = k/3; // vsi elementi v skupini so urejeni, zmanjšamo korak
}
}