这段代码是:
if(a[i] > a[j]){
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
为什么必须使用临时变量?当我尝试不使用temp时:
if(a[i] > a[j]){
a[i] = a[j];
}
它不会起作用,但是在我比较其他变量之前它不会起作用
如果没有这个临时变量
temp = a[i];
a[i] = a[j];
a[j] = temp;
那么您将丢失其中的值(在a[i]
之前a[i] = a[j]
。
有一种无需使用时间值即可交换值的方法。解决方案在这里。
在C中是这样的:
int x = 10, y = 5;
// Code to swap 'x' (1010) and 'y' (0101)
x = x ^ y; // x now becomes 15 (1111)
y = x ^ y; // y becomes 10 (1010)
x = x ^ y; // x becomes 5 (0101)
使用XOR运算符。代码是从这里开始的,请转到该链接以找到使用此解决方案的完整说明和可能的缺点。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句