第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

javascript 快速排序 無緣錯誤,我哪里錯了?

javascript 快速排序 無緣錯誤,我哪里錯了?

炎炎設(shè)計 2018-10-09 13:14:54
學(xué)習(xí)算法 javascript 實現(xiàn),寫一個簡單的快速排序,在瀏覽器中一直報錯。代碼:    function quickSort(arr){        var len;        len=arr.length;        if (len <= 1) {            return arr; //如果數(shù)組只有一個數(shù),就直接返回;        }        var midlen = Math.floor(len/2);        var mid = arr[midlen];        // console.log(mid);        var left = [];        var right = [];        for (var i = 0; i < len; i++) {            if (arr[i] < mid) {                left.push(arr[i]);            } else {                right.push(arr[i]);            }        }        // console.log(left.concat([mid],right));         return quickSort(left).concat([mid], quickSort(right));    }    //test    console.log(quickSort([9, 2, 8, 5, 1]));
查看完整描述

1 回答

?
隔江千里

TA貢獻(xiàn)1906條經(jīng)驗 獲得超10個贊

死循環(huán),堆棧溢出了。right數(shù)組有兩項,9,8.遞歸執(zhí)行的時候始終是9,8.
因為此時mid是8,ara[i]始終>=mid,right數(shù)組始終是9,8.就死循環(huán)了。
正確寫法如下:


function quickSort(arr){

    var len;

    len=arr.length;

    if (len <= 1) {

        return arr; //如果數(shù)組只有一個數(shù),就直接返回;

    }

    var midlen = Math.floor(len/2);

    // var mid = arr[midlen];

    var mid = arr.splice(midlen,1)[0];

    // console.log(mid);

    var left = [];

    var right = [];

    for (var i = 0,len=arr.length; i < len; i++) {

        if (arr[i] <= mid) {

            left.push(arr[i]);

        } else {

            right.push(arr[i]);

        }

    }

    // console.log(left.concat([mid],right));

    return quickSort(left).concat([mid], quickSort(right));

}

//test

console.log(quickSort([9, 2, 8, 5, 1]));

//輸出:[ 1, 2, 5, 8, 9 ]


查看完整回答
反對 回復(fù) 2018-11-30
  • 1 回答
  • 0 關(guān)注
  • 497 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號