Sunt necesare pentru admiterea de la UBB doar interschimbarea clasică, prin adunare, prin scădere și prin scădere.
Interschimbare prin funcții predefinite
swap(x,y);Interschimbare clasică (metoda paharelor)
În această metodă se folosește o variabilă auxiliară (încă un pahar).
void swap(int &x, int &y){
int aux=x;
x=y;
y=aux;
}Interschimbare prin adunare
void swap(int &x, int &y){
x=x+y;
y=x-y;
x=x-y
}Forma contrasă
void swap(int &x, int &y){
x+=y;
y=x-y;
x-=y;
}Interschimbare prin scădere
void swap(int &x, int &y){
x=x-y;
y=x+y;
x=y-x;
}Forma contrasă
void swap(int &x, int &y){
x-=y;
y+=x;
x=y-x;
}Interschimbare prin înmulțire
void swap(int &x, int &y){
x=x*y;
y=x/y;
x=x/y;
}Forma contrasă
void swap(int &x, int &y){
x*=y;
y=x/y;
x/=y;
}Interschimbare pe biți (XOR)
Nu intră la admiterea de la UBB
void swap(int &x, int &y){
x=x^y;
y=x^y;
x=x^y;
}Interschimbare prin împărțire
Această variantă deși pare corectă matematic, ea nu funcționează în C++ deoarece împărțirea pe int returnează doar câtul, iar pe float nu ar funcționa din cauza rotunjirilor. Teoretic ar putea funcționa în pseudocod, deoarece ar fi evaluată matematic, și simplificările ar fi corecte. dar nu a fost folosită niciodată in admiterea de la UBB. Așadar, această variantă de interschimbare este GREȘITĂ
void swap(int &x, int &y){
x=x/y;
y=x*y;
x=y/x;
}Forma contrasă
void swap(int &x, int &y){
x/=y;
y*=x;
x=y/x;
}