Avevi sbagliato solo la guardia del for:
codice:
for (h=j; h>=0; h--) 
    A[k+h] = A[i+h];
Se j è maggiore di zero, allora si dovrà ciclare finchè la variabile h va a zero, ossia, finchè essa rimane MAGGIORE O UGUALE di 0, decrementandosi ad ogni ciclo.

Altrimenti, con il segno invertito che avevi messo tu, il for terminava subito perchè la condizione era subito falsa.


Ciao.