亲宝软件园·资讯

展开

不借助第三者完成两值互换

Java精灵儿 人气:0

我们平常需要交换两个数值的话,一般会用一个中间变量来暂时存储变量值
如交换a,b两个值可以这样写:`int t;t=a;a=b;b=t;`这样就实现了两个值的交换。两个值的交换经常出现于数组排序算法中由于增加了临时变量,那么就可能增加系统资源的消耗,下面介绍一种更为高效的数值交换的算法;
本程序用java语言编写:

import java.util.Scanner;
public class ab {
    public static void main(String[] args) {
        Scanner in =new Scanner(System.in);
        int a=in.nextInt();
        int b=in.nextInt();
        System.out.println("交换前的值:a="+a+" b="+b);
        a=a^b;
        b=a^b;
        a=a^b;
        System.out.println("交换后的值:a="+a+" b="+b);
    }
}

 



5 3
交换前的值:a=5 b=3
交换后的值:a=3 b=5

本方法使用了" ^ "异或运算符,它的功能是参与运算的两个数各对应的二进制位做异或运算,当两对应的二进制位不同时结果为1,相同时结果为0;
假设我们给a=5,b=3;那么a用二进制表示为`0101`(取int低4位来举例),则b用二进制表示为`0011`顺序执行` a=a^b;b=a^b;a=a^b;`首先`a=a^b=0101^0011=0110=6`再执行`b=a^b=0110^0011=0101=5`最后执行`a=a^b=0110^0101=0011=3`执行完毕后,发现`a,b`两个值已经互换完成;

加载全部内容

相关教程
猜你喜欢
用户评论