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