我有一個賦值,我需要在不使用第三個變量的情況下交換兩個整數。 我不知道如何做到這一點。我將如何編碼?在不使用第三個變量的情況下交換兩個整數
回答
讓我們假設
a = 10;
b = 20;
a = a + b; // a = 30
b = a - b; // b = 10
a = a - b; // a = 20
價值交換。
閱讀「xor swap algorithm」。
您可以在這裏找到答案:
http://www.java2s.com/Tutorial/VB/0040__Data-Type/Swaptwointegerswithoutusingathird.htm
firstValue = firstValue Xor secondValue
secondValue = firstValue Xor secondValue
firstValue = firstValue Xor secondValue
交換兩個數值型變量做這樣
a = a + b;
b = a - b;
a = a - b;
OR
a = a xor b;
b = a xor b;
a = a xor b;
其中a和b是變量要交換
交換兩個*數字*變量 – 2012-04-27 12:26:51
是的,這是可能的:
Dim var1 = 1
Dim var2 = 2
var1 = var1 + var2
var2 = var1 - var2
var1 = var1 - var2
但你爲什麼需要它?代碼變得深奧。
+1爲深奧,好詞! – jon 2012-04-27 12:01:50
Dim a As Integer
Dim b As Integer
a= 1
b= 2
a = a Xor b
b = a Xor b
a = a Xor b
異或以上工作+ B算法,並做到這一點的最好辦法,但只是一個奇怪的方式做到這一點的例子。仍然不確定你爲什麼想要這樣做。只需構建一個函數,您可以提供兩個值ByRef並讓它執行標準交換方法。
Dim newList as New List(Of Integer)
newList.Add firstvalue
newList.Add secondValue
newList.Reverse
secondValue = newList.Item(0)
firstValue = newList.Item(1)
好主意,雖然'newList'可能被認爲是第三個變量。 – 2012-09-25 19:08:30
Take two text boxes and a command box.In command box type this code.
text1.text=val(text1.text) + val(text2.text)
text2.text=val(text1.text) - val(text2.text)
text1.text=val(text1.text) - val(text2.text)
3種方式
a = 4 , b = 5
1.使用XOR
a = a XOR b = 4 XOR 5 = 9
b = a XOR b = 9 XOR 5 = 4
a = a XOR b = 9 XOR 4 = 5
2.使用+, -
a = a+b = 4+5 = 9 // should not overflow
b = a-b = 9-5 = 4
a = a-b = 9-4 = 5
3.使用*,/
a = a*b = 4*5 = 20 // should not overflow
b = a/b = 20/5 = 4 // should not overflow and should not be irrational number
a = a/b = 20/4 = 5 // should not overflow and should not be irrational number
方法1#。
加減法
Integer a, b
read a and b
a= a+b;
b=a-b;
a=a-b;
問題:
不正確的結果,當數字總和會超過整數範圍。
方法#2。
乘法和除法方法
Integer a, b
read a and b
a=a*b;
b=a/b;
a=a/b;
問題:
- 如果A * B的值超過整數的範圍內。
- 如果a或b的值爲零,則會給出錯誤的結果。
方法#3。
XOR方法
Integer a , b
read a and b
a=a^b;
b=a^b;
a=a^b;
最好的辦法來解決這個問題,沒有任何缺陷。
- 1. 如何在不使用第三個變量的情況下交換兩個數字?
- 2. 在php中不使用第三個變量交換兩個變量值
- 3. 如何在沒有第三個變量的情況下進行交換?
- 4. 使用兩個變量而不是三個交換?
- 5. 在不使用臨時變量的情況下在C中交換兩個不同數組的元素
- 6. 如何在不使用臨時變量的情況下交換兩個字符串變量的值?
- 7. 在不使用臨時變量的情況下交換類中的變量
- 8. 在不使用函數的情況下增加一個變量
- 9. 交換使用逐opeation兩個變量並沒有使用第三個變量在C
- 10. AngularJS:在不暴露全局變量的情況下使用第三方庫
- 11. 交換兩個整數,而無需使用第三可變所有範圍的整數的值
- 12. 交換兩個數組而不完全分配第三個(C++)
- 13. 在不使用三角函數的情況下旋轉矢量
- 14. 在不改變頁面的情況下在兩個頁面之間交換變量
- 15. 在不清除整個畫布的情況下替換函數?
- 16. 如何在不使用變量的情況下獲取查詢的第三個月?
- 17. 交換兩個變量,而無需使用第三個變量作爲中介位置
- 18. SymPy:交換兩個變量
- 19. 在兩種情況下處理變量
- 20. 使用內聯彙編交換兩個整型變量
- 21. 兩個QPainter的情況下
- 22. 如何繪製三個變量的兩個函數的交集?
- 23. Bash-將兩個數組變量加到第三個數組的變量
- 24. 交換兩個數字沒有用C第三/ C++
- 25. 更改圖像交換(三個變量)
- 26. 在不使用mysql連接的情況下合併兩個表?
- 27. 使用只有兩個變量不工作的交換
- 28. 如何在不使用UINavigationController的情況下交換window.rootViewController?
- 29. 在這種情況下如何在不聲明全局變量的情況下將一個函數的變量用於另一個函數?
- 30. 如何在不使用數組的情況下獲取C#中變量的第一個值
試着以更好的方式向我們解釋它,也許這會讓你走上正軌。 – skyfoot 2012-04-27 11:54:19