我有一个赋值,我需要在不使用第三个变量的情况下交换两个整数。 我不知道如何做到这一点。我将如何编码?在不使用第三个变量的情况下交换两个整数
回答
让我们假设
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