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
Libérer: 2024-12-09 13:42:15
original
484 Les gens l'ont consulté

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;
    }
}
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal