两种不需要临时变量实现A、B变量互换引用的方法

传统的实现变量互换引用是需要引入一个第三方变量的,也很好理解,A先把自身给C,B再把自身给A,B最后再从C处得到引用。

    var arr = [32,23,11,20,57,33,44,100];

    //冒泡排序法
    function maopao(arr){
        for(var i=0;i<arr.length-1;i++){
            for(var j=0;j<arr.length-1-i;j++){
                if(arr[j] > arr[j+1]){
                    var temp = arr[j];   //引用交换到临时变量temp
                    arr[j] = arr[j+1];   //变量互换
                    arr[j+1] = temp;     //变量互换
                }
            }
        }
        console.log(arr);
    }

上面是一个对数组元素的排序方法,冒泡排序,进行2层嵌套的for循环,从内部数组的第一个元素开始对数据做比较,如果A大于B,那么久进行位置调换,这里就引入了一个临时变量,达到A、B变量互换引用的目的。

22194015_PS6u.jpg

下面说一下今天要讲解的2个方法:

异或方法

利用异或的特性,进行变量引用互换。这个方法有一个前提,必须是整数,而且两个引用值不能相等,相等的引用异或后等于0。

    var n1 = 13;
    var n2 = 4;
    n1 = n1^n2;
    n2 = n1^n2;
    n1 = n1^n2;
    console.log(n1);
    console.log(n2);

加减方法

这个方法很巧妙,简单的数据运算就达到了互换引用的目的,不过也有前提,就是两个引种值相加不能超过数值边界。

    var a = 4;
    var b = 9;
    a = a + b;
    b = a - b;
    a = a - b;
    console.log(a);
    console.log(b);

以上两种方法在没有增加内存的情况下实现了A、B变量引用的互换,方法很巧妙,分享给大家。

转载于:https://my.oschina.net/ym1983/blog/829371

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值