【发布时间】:2015-06-07 17:35:06
【问题描述】:
我有 两个 变量要切换,它们是 字符串。 它们包含 first 和 second 名称。
我想使用least possible amount of lines 切换它们,所以我没有创建第三个变量。
我尝试使用 xor swap,但一条错误消息显示无法将 James Adams 转换为类型 long。
xor 是否仅适用于 整数,如果是,我该如何有效地 交换变量?谢谢,任何想法表示赞赏。如果有帮助,我会添加代码。
Plutonix 建议 names = names.OrderBy(Function(o) o).ToArray() 可行。谢谢。谁能解释一下它是怎么做的,因为我以前没见过?
For counter1 = 0 to 5
For counter2 = counter1 + 1 to 5
If names(counter1) > names(counter2) then
names = names.OrderBy(Function(o) o).ToArray()
End if
Next
Next
请原谅格式问题或责怪 Apple。
【问题讨论】:
-
是什么让您认为第三个变量效率低下?
-
您关心使用的行数或内存使用情况?后者不会有所作为,因为任何其他方式都必须使用某种变量,一种方式或另一种方式。就线路而言,我发现有 3 行来做你想做的事情没有任何问题。 Xor是按位运算,0Xor1=1, 1Xor1=0....
-
这是一个单行:
Dim a = "a" : Dim b = "b" : Dim t = a : a = b : b = t -
既然它们在 2 个变量中,为什么你必须交换它们呢?只需在需要时以不同的顺序使用它们。 真正的问题是程序员在错误的地方和错误的时间花费了太多时间来担心效率 - Knuth。另见Micro-Optimization and Meatballs
-
顺便说一句,你为什么要标记你的问题
arrays?