摘要
今天写了闲着没事,写了一个排序算法,其中一个写了一个交换的函数,发现并不起作用,后来想起来初学的时候同样犯过此错误,故在此将解决方法写下。
错误的交换函数
public static void swap(int a,int b){
//这里使用异或运算比加法效率高些
System.out.printf("a=%d,b=%d\n",a,b);
a = a ^ b;
b = a ^ b;
a = a ^ b;
System.out.printf("a=%d,b=%d\n",a,b);
}
由于java基本类型是传值引用
此函数中,外部数据将值传给形参,a、b的作用域限定在swap函数,函数调用后,实际在函数外需要改变位置的数据没有产生变化。
解决思路
1.将交换后的值赋给返回值
public static int[] swap(int a,int