L'insertion sort è diverso dal tuo algoritmo
void insertionSort(int v1[], int dim)
{
int i,j,v;
for(i=1; i<=dim-1; i++)
{
v = v1[i]; //Conserva il valore da inserire
j = i;
while( j>0 && v1[j-1]>v ) //Finchè v1[j-1] contiene un valore superiore al valore che vogliamo inserire
{ //sposto "a destra" i valori
v1[j] = v1[j-1];
j--;
}
v1[j] = v; //Assegna il valore conservato
}
}
Edit: Preso da Wikipedia