传统的实现变量互换引用是需要引入一个第三方变量的,也很好理解,A先把自身给C,B再把自身给A,B最后再从C处得到引用。 var arr = [32,23,11,20,57,33,44,100]
传统的实现变量互换引用是需要引入一个第三方变量的,也很好理解,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变量互换引用的目的。
下面说一下今天要讲解的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变量引用的互换,方法很巧妙,分享给大家。