swap significa cambio di posto...
in generale puo' essere una cosa cosi':
codice:
void swap(int a, int b) {
  int tmp = a;
  a = b;
  b = tmp;
}
Solo che cosi' facendo lo scambio avviene tra due variabili locali, e quindi inutile all'esterno.

In C/C++ si possono passare gli indirizzi delle variabili e scambiare i contenuti, oppure passi l'indirizzo del vettore e i due indici. In C# non saprei proprio, ma immagino ci sia qualcosa di simile.