前端排序算法實現——JS快速排序

其實快速排序很簡單,只是對冒泡排序的一種改進。

快速排序的步驟:

1、找到數組的中間項,並把它移除
2、準備左右兩個新數組,循環數組剩下的每一項,比中間數小的,放左邊的數組中,比中間數大的放右邊的數組中
3、以遞歸的方式將左右兩邊的數組持續這樣處理,一直到左右兩個數組都排好序爲止,然後拼接(concat)

簡單畫了張圖可能會更好理解一些:
在這裏插入圖片描述
話不多說,放代碼:

		//創建一個快速排序的數組
        function quick(ary){
            //4、結束遞歸,如果當前數組的長度小於等於1,則返回這個數組
            if(ary.length<=0){
                return ary
            }
            //1、找到數組的中間項,並把它移出
            let middleIndex=Math.floor(ary.length/2)
            let middleValue=ary.splice(middleIndex,1)[0]

            //2、準備左右倆個個數組,循環剩下數組的每一項,比當前項小的放左邊,反之放右邊
            let aryLeft=[]
            let aryRight=[]
            
            for(let i=0;i<ary.length;i++){
                let item=ary[i]
                if(item<middleValue){
                    aryLeft.push(item)
                }else{
                    aryRight.push(item)
                }
            }

            //3、遞歸方式上左右兩邊的數組持續這樣處理,一直到左右兩個數組排好序爲止,然後拼接
            return quick(aryLeft).concat(middleValue,quick(aryRight))   
        }
        //創建一個數組
        let arr=[12,8,15,16,24]
        //調用快速排序的函數並賦值給arr2
        let arr2=quick(arr)
        //輸出arr2
        console.log(arr2)

此時,頁面上顯示的就是已經排好序的數組啦
在這裏插入圖片描述

發佈了18 篇原創文章 · 獲贊 19 · 訪問量 4158
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章