java交换两个数 & 细说"^交换"
来源:互联网 发布:淘宝买家好评率90 编辑:程序博客网 时间:2024/05/29 04:34
今天实验课,老师让写if分支语句对3个数字从小到大排序。我发现java不像C++那样能用引用,指针之类的东西进行交换操作,这可不是什么好事,虽然后来也写出了交换,但是觉得其本质还是的值的拷贝。
异或位运算:
用类:
异或位运算:
//main()内部: int []p=new int [3]; Scanner sc= new Scanner (System.in); for(int i=0;i<3;i++){ p[i]=sc.nextInt(); } if(p[0]>p[1]){ p[0]=p[0]^p[1]; p[1]=p[0]^p[1]; p[0]=p[0]^p[1]; }
研究一下刚刚仅用两个变量的交换过程:假如我们设中间值t=a^b, 那么有t^a=b, t^b=a 所以交换的话就是a=t^a, b=t^b. 为了仅使用两个变量a,b进行交换,所以有:
a=a^b (t=a^b)
b=a^b (a=t^b b'=a)
a=a^b (b=t^a=t^b' a'=b)
a'和b'就是交换了的值
static void swap(int[]b,int d1,int d2 ){ if(b[d1]>b[d2]){ int t=b[d1]; b[d1]=b[d2]; b[d2]=t; }} public static void main(String arg[]){ int []p=new int [3]; Scanner sc= new Scanner (System.in); for(int i=0;i<3;i++){ p[i]=sc.nextInt(); } if(p[0]>p[1]){ swap(p,0,1); }
用类:
public class Swap { int a,b; public Swap(int t1,int t2){ this.a=t2; this.b=t1; }}//```` if(p[0]>p[1]){ wp=new Swap(p[0],p[1]); p[0]=wp.a; p[1]=wp.b; }
1 0
- java交换两个数 & 细说"^交换"
- Java交换两个数
- java两个数进行交换
- Java快速交换两个数的值
- java交换两个数的数值
- Java:用四种方式实现两个数交换
- 两个数交换算法
- swap-交换两个数
- 交换两个数
- 交换两个数
- swap() 交换两个数
- 两个数的交换
- 直接交换两个数
- 两个数的交换
- 就地交换两个数
- 交换两个数
- python交换两个数
- 交换两个数
- 设置NavigationBar标题的颜色
- 学习计划
- Android 4.4 中 WebView 使用注意事项
- POJ3984
- 解决兼容最简单的是自定义Style
- java交换两个数 & 细说"^交换"
- NOIP 2003
- 关于Linux下动态以及静态库的制作方法
- Android数据存储之SharedPreferences
- 栈实现表达式求值
- hdu1576 A/B
- 给研究生生生活定个方向
- Linux mysql 2
- 进入实战,开发酷欧天气(五)