首页 > 冒泡排序上的一个小问题

冒泡排序上的一个小问题

    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

【热门文章】
【热门文章】