Introduction :
L'échange des valeurs de deux variables est une tâche de programmation courante. Généralement, une troisième variable est utilisée comme espace réservé temporaire pour faciliter l’échange. Cependant, dans certains scénarios, il peut être souhaitable d'éviter de créer une variable supplémentaire pour optimiser la mémoire ou pour d'autres raisons.
Énoncé du problème :
Échangez les valeurs de deux variables a et b sans utiliser de troisième variable.
Solution : XOR Swap Algorithme
L'algorithme d'échange XOR exploite l'opérateur XOR (^) pour échanger le contenu de deux variables. L'algorithme est défini comme :
void xorSwap(int* x, int* y) { if (x != y) { //ensure that memory locations are different *x ^= *y; *y ^= *x; *x ^= *y; } }
Détails d'implémentation :
Exemple :
Démontrons l'algorithme avec a = 10 et b = 15 :
// Before swap a = 10 (00001010) b = 15 (00001111) // XOR step 1 a = a ^ b = 00001010 ^ 00001111 = 00000101 // XOR step 2 b = b ^ a = 00001111 ^ 00000101 = 00001010 // XOR step 3 a = a ^ b = 00000101 ^ 00001010 = 00001111 // After swap a = 15 b = 10
Considérations :
Bien que l'algorithme d'échange XOR puisse être efficace, son utilisation n'est généralement pas recommandée dans des scénarios de programmation typiques. Les compilateurs modernes peuvent optimiser l'utilisation d'une variable temporaire, ce qui rend plus efficace l'échange de valeurs dans la plupart des cas.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!