Heim >Backend-Entwicklung >C++ >Wie können Sie zwei Variablenwerte austauschen, ohne eine dritte Variable zu verwenden?

Wie können Sie zwei Variablenwerte austauschen, ohne eine dritte Variable zu verwenden?

Linda Hamilton
Linda HamiltonOriginal
2024-12-24 21:21:46912Durchsuche

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

Variablenwerte ohne dritte Variable austauschen: Ein Interview-Rätsel

In Interviews zur Softwareentwicklung wird eine häufige Frage gestellt: Wie tauscht man die Werte aus? Werte von zwei Variablen ohne Verwendung einer dritten Variablen? Traditionell wird dies durch die Verwendung einer temporären Variablen als Platzhalter erreicht.

Um die Notwendigkeit einer dritten Variablen zu umgehen, kann der XOR-Swap-Algorithmus eingesetzt werden. Diese Technik nutzt die exklusive ODER-Operation (XOR), die 0 zurückgibt, wenn beide Bits gleich sind, und 1, wenn sie unterschiedlich sind.

XOR-Swap-Algorithmus:

void xorSwap(int* x, int* y) {
    if (x != y) { //ensure that memory locations are different
       *x ^= *y;
       *y ^= *x;
       *x ^= *y;
    }
}

Dieser Algorithmus funktioniert, indem er die folgenden Schritte ausführt:

  1. Überprüfen Sie, ob x und y auf unterschiedliche Speicherorte verweisen. Wenn dies der Fall ist, fahren Sie fort.
  2. Führen Sie eine XOR-Operation zwischen *x und *y durch und speichern Sie das Ergebnis in *x. Dadurch werden im Wesentlichen die Bits von *x umgedreht, sodass sie mit denen von *y übereinstimmen.
  3. Führen Sie eine weitere XOR-Operation zwischen *x und *y durch und speichern Sie das Ergebnis in *y. Dadurch werden die Bits von *y umgedreht, sodass sie mit denen des ursprünglichen *x übereinstimmen.
  4. Führen Sie eine abschließende XOR-Operation zwischen *x und *y durch und speichern Sie das Ergebnis in *x. Dadurch werden die Bits von *x auf ihre ursprünglichen Werte zurückgesetzt.

Überlegungen:

  • Es ist wichtig sicherzustellen, dass x und y sich auf unterschiedliche beziehen Speicherorte. Andernfalls werden durch die XOR-Verknüpfung alle vorgenommenen Änderungen gelöscht.
  • Dieser Algorithmus wird in der Praxis im Allgemeinen nicht verwendet, da moderne Compiler die Notwendigkeit einer temporären Variablen wegoptimieren. Es zeigt jedoch das Konzept der Verwendung bitweiser Operationen zur Erzielung komplexer Operationen.

Das obige ist der detaillierte Inhalt vonWie können Sie zwei Variablenwerte austauschen, ohne eine dritte Variable zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn