Maison >développement back-end >C++ >Comment échanger deux variables sans utiliser une troisième variable ?

Comment échanger deux variables sans utiliser une troisième variable ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-09 13:42:15484parcourir

How Can You Swap Two Variables Without Using a Third Variable?

Échanger des variables sans troisième variante

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 :

  • L'instruction if vérifie si x et y ont des emplacements mémoire différents pour s'assurer qu'ils ne le sont pas. pointant vers la même valeur.
  • L'opérateur XOR est appliqué trois fois pour échanger consécutivement les valeurs. Chaque opération XOR retourne les bits de la variable correspondante, échangeant efficacement leur contenu.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn