Ci ho dato solo un occhio veloce, ma secondo me il problema è nel ciclo while:

while (j>=0 && el_da_ins < (s+j)->numvittoriesquadra)
{
(s+j+1)->numvittoriesquadra = (s+j)->numvittoriesquadra;
(s+j+1)->numero = (s+j)->numero;

j--;
}
(s+j+1)->numvittoriesquadra = el_da_ins;
}
Nell'ultima riga tu copi solo il numero di vittorie, mentre dovresti anche fare in modo di copiare il numero della squdra, perchè altrimenti i numeri di vittorie si aggiornano ma quelli delle squadre si sovrappongono!
Secondo me potresti rimediare mettendo all'inizio del ciclo for, una cosa del tipo:

codice:
int oldNum = (s + i)->numero;
in modo da tener traccia del numero della squadra che stai analizzando e da poterlo copiare nella sua posizione definitiva alla fine, facendo:

codice:
(s + j + 1)->numero = oldNum;
Potrebbe essere? Sappimi dire se va