数组的位置调换java_(Java版)算法——交换两个基本数据类型的变量值和数组中元素调换。。。
数组中元素交换位置(辅助空间⽅法和位运算⽅法)
在算法中,经常会遇到在数组中调换两个元素位置的问题或者交换两个基本数据类型的变量的值的问题
辅助空间⽅法
交换两个基本数据类型的变量
int a=1,b=2;
int tmp=a;
a=b;
b=temp;
//此时a=2,b=1
数组中元素调换位置
public static void swap(int[] arr, int i, int j) {
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
位运算⽅法
位异或运算(^)
运算规则
两个数转为⼆进制,然后从⾼位开始⽐较,如果相同则为0,不相同则为1。
⽐如:8^11.
8转为⼆进制是1000,11转为⼆进制是1011.从⾼位开始⽐较得到的是:0011.然后⼆进制转为⼗进制,就是
Integer.parseInt(“0011”,2)=3;
交换两个基本数据类型的变量
int f = 50; //⼆进制 110010
int g = 60; //⼆进制 111100
f = f^g; //110010,111100——>001110
g = f^g; //001110,111100——>110010 ——>50
f = f^g; //001110,110010——>111100 ——>60
System.out.println(f+" "+g);//输出结果是:60 50
数组中元素调换位置
public static void swap(int[] arr, int i, int j) {
arr[i] = arr[i] ^ arr[j];
arr[j] = arr[i] ^ arr[j];
arr[i] = arr[i] ^ arr[j];
java变量的数据类型分为两种
}
两种⽅法对⽐
利⽤位异或运算(^)节省辅助空间,降低空间复杂度
koala⼂
发布了14 篇原创⽂章 · 获赞 7 · 访问量 2894
私信
关注
标签:arr,110010,Java,int,变量值,数据类型,⼆进制,111100

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。