面试题:交换2个数字,要求高效快速.(可用三种方式实现交换2个数字)

来源:互联网 发布:录播软件 编辑:程序博客网 时间:2024/04/30 05:08

交换2个数字一般有三种方式:

第一种是利用一个三方变量temp作为临时变量交换

第二种是利用a+b,a-a之类的方式交换(a+b可能会溢出)

第三种是利用异或运算方式告诉的交换数字

package java基础题目;/* * 问题:交换2个数字,要求高效 * 位异或运算:相同则0(0^0,1^1),不同则1(1^0,0^1) * 位或运算:如果2个位都是0则是0(0|0),其余情况都是1(0|1,1|0,1|1) */public class A2015年6月6日交换2个数字 {public static void main(String[] args) {int a = 10;int b = 20;System.out.println("原始的a=" + a + ",b=" + b);method1(a, b);method2(a, b);method3(a, b);}// 方式一()一般开发时采用第三方变量,易于理解!public static void method1(int a, int b) {int temp = a;a = b;b = temp;System.out.println("借用中间变量temp交换数据a=" + a + ",b=" + b);}// 方式二:如果a+b的值超出了int的范围就会有数据溢出。public static void method2(int a, int b) {a = a + b;// a=30=10+20b = a - b;// b=10=30-20a = a - b;// a=20=30-10System.out.println("a=" + a + ",b=" + b);}// 方式三:面试时就写这种异或运算交换2个数字(异或运算不会溢出)// 有关异或运算的结论:针对同一个数据异或两次,该数本身不变,比如:a^b^b=a,a^b^a=bpublic static void method3(int a, int b) {a = a ^ b;b = a ^ b;// b=a^b^b,a异或2个b就是aa = a ^ b;// a=a^b^a,b异或2个a就是b,// 所以2个数字就交换了System.out.println("运用异或运算交换2个数据a=" + a + ",b=" + b);}}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 谈朋友感觉好累怎么办 家庭条件不好娶老婆难办怎么办? 异地恋闹矛盾了怎么办 有人威胁要杀我全家怎么办 分手了借我的钱怎么办 脸打架打肿了怎么办 人家不加我qq好友怎么办 一个好友被删了怎么办 dnf脸黑怎么办还有办法 我想登别人微信怎么办 昌硕工资没到怎么办 昌硕离职不批怎么办 昌硕工资不到卡怎么办 上海人去苏州工作社保怎么办 娶个个脾气暴躁的媳妇怎么办 满脸的黑头痘痘怎么办 脚底磨起泡不敢走路怎么办 老婆老是找异性朋友怎么办 喜欢的人有对象怎么办 遇到了更喜欢的怎么办 8岁骨龄11岁怎么办啊 13岁初中生有思想不听话怎么办 交朋友找对象喜欢颜值高的怎么办 儿子找对象不听父母怎么办 缺爱怎么办的搞笑回答 对象说有人追她怎么办 说了一句话媳妇非常生气怎么办 柔顺后头发太臭怎么办 积分兑换手机被骗了怎么办 老板对你的上级不满怎么办 如果老板不给工资怎么办 手机号码被标记为其他公司怎么办? 被标记为骚扰电话怎么办 手机被标记骚扰电话怎么办 360摄像头不支持5g怎么办 摄像头不支持5g网络怎么办 家里的wifi卡了怎么办 办信用卡没有座机号码怎么办 拨打电话时显示号码有误怎么办 个体营业执照怎么办企业支付宝 没满16岁怎么办电话卡