Ci sono due problemi:
1) questo pezzo di codice non scambia x con y, ma semplicemente scrive y su x
int appoggio;
appoggio=y;
x=y;
appoggio=x;
Prendi fisicamente 3 cartoni di scarpe e ci scrivi sopra "appoggio", "x" e "y" e prendi due cartoncini su cui scrivi due valori plausibili, es. "42" e "48"; metti questi due cartoncini uno dentro "x" e l'altro dentro "y" e prova a scambiarli senza mai metterne due nello stesso cartone.
2) il secondo problema è che se anche il punto 1 funzionasse, la modifica rimarrebbe all'interno della funzione; per ottenere la modifica anche fuori devi passare i due elementi tramite puntatore, quindi il prototipo della funzione deve essere
void swap(int *x,int *y);
Se non hai affrontato/studiato questo argomento la cosa ti sembrerà incredibile: se è così, lascia stare la funzione ed esegui lo swap direttamente nel punto in cui serve