首页 > 开发 > JS > 正文

冒泡排序上的一个小问题

2017-09-05 12:51:30  来源:网友分享
    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]就是操作数组那一块内存,也就是currarr[i],只是值相等,其余并无什么关系,内存的地址并不相同,所以你用变量替换,只是在curr的数值罢了,根本不会影响到arr数组,另外附加一份各种排序的js实现:https://github.com/zp1996/JavaScript-implementation-of-eight-sorting-methods