Variablen vertauschen
08.03.2007
Author: N43
In den meisten Büchern wird zum Vertauschen der Weg über eine temporäre Variable gegangen.
Code:
-- A und B werden vertauscht --
Temp = A
A = B
B = Temp
Temp = A
A = B
B = Temp
Es gibt (mindestens) zwei Möglichkeiten Variablen zu vertauschen, ohne eine temporäre Variable zu verwenden.
Die erste Variante geht über Addition und Subtraktion.
Code:
-- A und B vertauschen --
An = A - B
Bn = B + An = B + A - B = A
An = Bn - An = A - A + B = B
An = A - B
Bn = B + An = B + A - B = A
An = Bn - An = A - A + B = B
An und Bn wurden nur zum unterscheiden der ursprünglichen Werte von den neuen Werten verwendet.
Die obige Variante hat allerdings einen Nachteil, sie funktioniert nicht mit allen Datentypen (beispielsweise Fließkommezahlen).
Eine allgemeinere Lösung verwendet xor (im Beispiel steht ^ für xor)
Code:
-- Es werden wieder A und B vertauscht --
An = A ^ B
Bn = An ^ B = A ^ B ^ B = A ^ 0 = A
An = An ^ Bn = A ^ B ^ A = A ^ A ^ B = 0 ^ B = B
Es wurde wieder An und Bn verwendet, um die Entwicklung von A und B zu zeigen. Ohne An und Bn sieht das dann folgendermaßen ausAn = A ^ B
Bn = An ^ B = A ^ B ^ B = A ^ 0 = A
An = An ^ Bn = A ^ B ^ A = A ^ A ^ B = 0 ^ B = B
Code:
A = A ^ B
B = A ^ B
A = A ^ B
Nachteil dieser Methode ist, dass sie nicht mit allen Programmiersprachen funktioniert.B = A ^ B
A = A ^ B
Auf den mir bekannten Prozessoren steht auch der Befehl xchg zur Verfügung um 2 Werte zu vertauschen, welcher nach meinem Kenntnisstand aber in keiner bekannteren Programmiersprache zur Verfügung steht.
Deine Meinung ist gefragt:
Sei der Erste und teile uns Deine Meinung mit.
Kommentare