JS實(shí)現(xiàn)快速排序

快速排序用到以下方法

Math.floor->返回小于或等于一個(gè)給定數(shù)字的最大整數(shù)
    Math.floor(0.6); // output: 0
    Math.floor(0.2); //output: 0
    Math.floor(-0.2); // output: -1
    Math.floor(-0.6); // output: -1
splice->向/從數(shù)組中添加/刪除項(xiàng)目,然后返回被刪除的項(xiàng)目, splice會(huì)改變?cè)瓟?shù)組的長(zhǎng)度。

語法: arrayObject.splice(index,howmany,item1,.....,itemX)
參數(shù):
index->必需。整數(shù),規(guī)定添加/刪除項(xiàng)目的位置,使用負(fù)數(shù)可從數(shù)組結(jié)尾處規(guī)定位置。
howmany->必需。要?jiǎng)h除的項(xiàng)目數(shù)量。如果設(shè)置為 0,則不會(huì)刪除項(xiàng)目。
item1, ..., itemX->可選。向數(shù)組添加的新項(xiàng)目。

    var arr = [1, 2, 3, 4, 5];
    var arrRemove = arr.splice(0, 2); // arr = [3, 4, 5]; arrRemove = [1, 2];
    arr.splice(1, 0, 8); // arr = [3, 8, 4, 5]
contact->用于連接兩個(gè)或多個(gè)數(shù)組

語法: arrayObject.concat(arrayX,arrayX,......,arrayX)

    var arr1 = [1, 2];
    var arr2 = [3, 4];
    var arrConcat = arr1.concat(arr2);
    console.log(arrConcat) // arrConcat = [1, 2, 3, 4]
push->可向數(shù)組的末尾添加一個(gè)或多個(gè)元素,并返回新的長(zhǎng)度

語法:arrayObject.push(newelement1,newelement2,....,newelementX)

    var arr = [1, 2, 3];
    console.log(arr.push(4)); // 4
    console.log(arr); // [1, 2, 3, 4]
快速排序:取中間位置值為基準(zhǔn),剩余數(shù)據(jù)與其相比較,比基準(zhǔn)大放右邊,比基準(zhǔn)小放左邊,遞歸不斷重復(fù)這個(gè)過程,可得到排序后的數(shù)組。
function quickArray(arr) {
        var len = arr.length;
        var leftArr = [];
        var rightArr = [];
        if (len <= 1) {
            return arr;
        }
        var midIndex = Math.floor(len / 2);
        var midNumber = arr.splice(midIndex, 1)[0];
        for (var i = 0; i < len - 1; i++) {
            if (arr[i] < midNumber) {
                leftArr.push(arr[i]);
            } else {
                rightArr.push(arr[i]);
            }
        }
        return quickArray(leftArr).concat([midNumber], quickArray(rightArr));
    }

參考連接: http://www.ruanyifeng.com/blog/2011/04/quicksort_in_javascript.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 快速排序的算法已經(jīng)忘得干干凈凈,這次拿出來重溫下,并用JS實(shí)現(xiàn)一次。 原理 先介紹下大致的排序步驟:比如有這么一個(gè)...
    閃閃發(fā)光的狼閱讀 1,098評(píng)論 0 3
  • 快速排序 快速排序 由C. A. R. Hoare在1962年提出。它的基本思想是:通過一趟排序?qū)⒁判虻臄?shù)據(jù)分割...
    前端C羅閱讀 750評(píng)論 0 6
  • 快速排序的思想 (1)在數(shù)據(jù)集之中,找一個(gè)基準(zhǔn)點(diǎn) (2)建立兩個(gè)數(shù)組,分別存儲(chǔ)左邊和右邊的數(shù)組 (3)利用遞歸進(jìn)行...
    WPeach閱讀 454評(píng)論 0 0
  • 大致分三步: 1、找基準(zhǔn)(一般是以中間項(xiàng)為基準(zhǔn)) 2、遍歷數(shù)組,小于基準(zhǔn)的放在left,大于基準(zhǔn)的放在right ...
    LJQ21閱讀 714評(píng)論 0 1
  • 頹吧,頹吧,就讓我頹吧,頹到5號(hào)出分。
    HuMingZhe閱讀 112評(píng)論 0 0

友情鏈接更多精彩內(nèi)容