JavaScript算法實現(xiàn) -- 快速排序

1.在數(shù)據(jù)集之中,找一個基準(zhǔn)點

  1. 建立兩個數(shù)組,分別存儲左邊和右邊的數(shù)組

  2. 利用遞歸進行下次比較

       function quickSort(arr) {
            if (arr.length <= 1) {
                // 如果數(shù)組只是一個元素 遞歸終止
                return arr
            }
            // 找到數(shù)組中間的基準(zhǔn)索引
            let pointIndex = ~~arr.length / 2
            // 找到數(shù)組中間索引的值
            let pointValue = arr.splice(pointIndex, 1)
            let left = [], right = []
            arr.forEach(item => {
                // 基準(zhǔn)點的左邊的數(shù)傳到左邊數(shù)組 基準(zhǔn)點的右邊的數(shù)傳到右邊數(shù)組
                item < pointValue ? left.push(item) : right.push(item)
            })
            //遞歸不斷重復(fù)比較 
            return quickSort(left).concat(pointValue, quickSort(right))
        }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • quicksort可以說是應(yīng)用最廣泛的排序算法之一,它的基本思想是分治法,選擇一個pivot(中軸點),將小于pi...
    黎景陽閱讀 546評論 0 1
  • “快速排序”的思想很簡單,整個排序過程只需要三步: (1)在數(shù)據(jù)集之中,找一個基準(zhǔn)點 (2)建立兩個數(shù)組,分別存儲...
    想當(dāng)一個大頭兵閱讀 530評論 0 0
  • 一、直接插入排序 直接插入排序(Insertion Sort)的基本思想是:每次將一個待排序的元素記錄,按其關(guān)鍵字...
    kevin16929閱讀 650評論 0 0
  • 歡迎Follow我的GitHub, 關(guān)注我的簡書. 本文的合集已經(jīng)編著成書,高級Android開發(fā)強化實戰(zhàn),歡迎各...
    SpikeKing閱讀 1,988評論 3 1
  • 三言兩語說筆記,第一次幫忙做作業(yè)點評手繪重點,迭代兩個版本,有一些心得體會。 缺點:耗時比較久,重點歸納很少。 可...
    Miss_Raquel閱讀 508評論 0 1

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