两个数交换的四种常用方法:
1.中间变量交换
2.加减减法交换
3.赋值交换
4.异或交换
以下是Java代码:
public static void main(String[] args){
System.out.println();
System.out.println();
long start, end;
int a = 10, b = 20;
long count = 1000000000L;
start = System.currentTimeMillis();
for(long i = 0; i < count; i++){
a = b + (b = a) * 0;
}
end = System.currentTimeMillis();
a = b + (b = a) * 0;
System.out.println("*******************************");
System.out.println("a=" + a +" " + "b=" + b);
System.out.println("1.赋值交换耗时:" + (end-start) + "ms");
System.out.println("*******************************");
a = 10; b = 20; //恢复原a、b值
start = System.currentTimeMillis();
for(long i = 0; i < count; i++){
a += b;
b = a - b;
a -= b;
}
end = System.currentTimeMillis();
a += b;
b = a -b;
a -= b;
System.out.println("a=" + a +" " + "b=" + b);
System.out.println("2.加减减交换耗时:" + (end-start) + "ms");
System.out.println("*******************************");
a = 10; b = 20; //恢复原a、b值
start = System.currentTimeMillis();
int t;
for(long i = 0; i < count; i++){
t = a;
a = b;
b = t;
}
end = System.currentTimeMillis();
t = a;
a = b;
b = t;
System.out.println("a=" + a +" " + "b=" + b);
System.out.println("3.中间变量交换耗时:" + (end-start) + "ms");
System.out.println("*******************************");
a = 10; b = 20; //恢复原a、b值
start = System.currentTimeMillis();
for(long i = 0; i < count; i++){
a ^= b;
b ^= a;
a ^= b;
}
end = System.currentTimeMillis();
a ^= b;
b ^= a;
a ^= b;
System.out.println("a=" + a +" " + "b=" + b);
System.out.println("4.异或交换耗时:" + (end-start) + "ms");
System.out.println("*******************************");
}
结果输出:
a=20 b=10
1.赋值交换耗时:1124ms
a=20 b=10
2.加减减交换耗时:895ms
a=20 b=10
3.中间变量交换耗时:598ms
a=20 b=10
4.异或交换耗时:1475ms