不借助第三变量实现两数交换

简介: 基操两数交换最简单最容易理解的就是借助第三变量

基操

两数交换最简单最容易理解的就是借助第三变量

    public void swapOne(){
        int a = 4;
        int b = 5;
        int c = a;
        a = b;
        b = c;
        System.out.println("a:"+a); //a:5
        System.out.println("b:"+b); //a:4
    }

进阶

利用数学计算

    public void swapTwo(){
        int a = 4;
        int b = 5;
        a=a+b;
        b=a-b;
        a=a-b;
        System.out.println("a:"+a); //a:5
        System.out.println("b:"+b); //a:4
    }

更进阶

利用异或运算

    public void swapThree(){
        int a = 4;
        int b = 5;
        a = a ^ b; // 0101 ^ 0100 ===> 0001,此时a的值为1
        b = a ^ b; // 0001 ^ 0100 ===> 0101,此时b的值为5
        a = a ^ b; // 0001 ^ 0101 ===> 0100,此时a的值为4
        System.out.println("a:"+a); //a:5
        System.out.println("b:"+b); //a:4
    }


相关文章
|
8月前
【变态面试题】【两种解法】不能创建临时变量(第三个变量),实现两个数的交换
【变态面试题】【两种解法】不能创建临时变量(第三个变量),实现两个数的交换
56 0
【变态面试题】【两种解法】不能创建临时变量(第三个变量),实现两个数的交换
|
8月前
不使用第三方变量的情况下交换两个数值
不使用第三方变量的情况下交换两个数值
42 1
|
C语言
C语言之用指针实现两个数组中元素的相加并存放到第三个数组中
C语言之用指针实现两个数组中元素的相加并存放到第三个数组中
206 0
|
C语言
C语言:调整数组使奇数全部都位于偶数前面
题目: 输入一个整数数组,实现一个函数, 来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分, 所有偶数位于数组的后半部分。 (奇数在数组前面,偶数在数组后面)
121 0
|
存储
学C的第二十三天【继续深度剖析数据在内存中的存储:3. 浮点型在内存中的存储(重点);练习:1. 有序序列判断;2. 获得月份天数(多组输入);3. 使用指针打印数组内容;4. 使用指针使字符串逆序】-2
(4). 取出内存中的 指数E(三种情况):E全为1 指数E 是通过 真实值+中间值 算出来的,如果E全是1,(32位系统)说明E的真实值是 128,指数是128说明这个值是非常大的。 这时,如果 有效数字M 全为0,表示 ±无穷大(正负取决于符号位s)
|
存储 算法 前端开发
前端算法-除自身外数组的乘积
前端算法-除自身外数组的乘积