var arr=[3,5,2,6,7,9,8,4];
//将最大数置换到最后一个元素
//从第一个数开始,依次取出每个元素和下一个元素比较
for(var i=0; i<arr.length-1;i++){
var curr=arr[i];
var next=arr[i+1];
if(curr>next){
//为什么用变量替换数组无法实现冒泡,而得使用arr[i]这种方式?
curr=next+curr;
next=curr-next;
curr=curr-next;
/* var box=arr[i];
arr[i]=arr[i+1];
arr[i+1]=box;*/
}
}
console.log(arr);
使用的变量是另外开辟了内存,而使用
arr[i]
就是操作数组那一块内存,也就是curr
与arr[i]
,只是值相等,其余并无什么关系,内存的地址并不相同,所以你用变量替换,只是在curr
的数值罢了,根本不会影响到arr数组,另外附加一份各种排序的js实现:https://github.com/zp1996/JavaScript-implementation-of-eight-sorting-methods