Witam serdecznie, napisałem funkcję, która sortuje tablice za pomocą sortowania Shella i działa prawie dobrze. Prawie, ponieważ na ostatnim miejscu cały czas pojawia się cyferka 4, reszta tablicy jest dobrze posortowana. Nie mam pojęcia, gdzie jest błąd
int *shell(int *tab, int size)
{
int h = 1;
int i, x, j, z;
do { h = 3 * h + 1; } while (h < size / 9);
do{
for (i = h + 1; i <= size; i++)
{
x = tab[i -1]; j = i;
do{
tab[j - 1] = tab[j - h - 1];
j = j - h;
} while (j >= h + 1 && x<tab[j - h - 1]);
tab[j -1] = x;
}
h /= 3; //zmniejszenie wartości h
} while (h > 0);
printf("Po sortowaniu:\n\n");
for (z = 0; z < size; z++) printf("%d ", tab[z]);
getchar();
return tab;
}
Z góry dziękuję za wszelką pomoc i radę :)