10不借助第三个变量,交换两个数 (使用异或^).zip
立即下载
资源介绍:
不借助第三个变量,交换两个数。(使用异或^)
package class02;
import java.util.Arrays;
/**
* 不借助第三个变量,交换两个数。(使用异或^)
* 异或(^):相同为0,不同为1。
* 记为:无进位相加。
*/
public class Code1_Swap {
public static void main(String[] args) {
int a = 2;
int b = 3;
System.out.println(a);
System.out.println(b);
a = a ^ b;
b = a ^ b;
a = a ^ b;
System.out.println(a);
System.out.println(b);
System.out.println("=====================================");
int[] arr = {5, 6, 7, 8, 9};
int i = 2;
int j = 4;
arr[i] = arr[i] ^ arr[j];
arr[j] = arr[i] ^ arr[j];
arr[i] = arr[i] ^ arr[j];
System.out.println("arr = " + Arrays.toString(arr));//arr = [5, 6, 9, 8, 7]
//当i和j不同时,即索引位置不同时,也就是要交换的两个数,所指向的地址,不是同一个地址时,
//使用异或运算,完成交换,是正确的。
//如果要交换的两个数,所指向的地址,是同一个地址时,使用异或运算,完成交换,是错误的。
//错误的结果就是,两个数都被刷成了0。如下:
int n = 3;
int m = 3;
arr[n] = arr[n] ^ arr[m];
arr[m] = arr[n] ^ arr[m];
arr[n] = arr[n] ^ arr[m];
System.out.println("arr = " + Arrays.toString(arr));//arr = [5, 6, 9, 0, 7]
}
}
资源文件列表:
10不借助第三个变量,交换两个数。(使用异或^).zip 大约有1个文件
- 10不借助第三个变量,交换两个数。(使用异或^).txt 1.45KB