1. 程式人生 > >排序演算法——快速排序演算法

排序演算法——快速排序演算法

網際網路的大型公司還在火熱招聘中,參與了一次又一次的筆試,都不通過,我還是太菜!!!

作為程式設計人員,需要邁過去“資料結構與演算法”這個坎,畢竟,筆試不會真的很虧,加油吧,少些水,多點實操。

一、快速排序演算法思想:

從一組資料中找出一個基準值,一般是選擇中間值作為基準值,然後從左到右將值與基準值進行比較,如果小於基準值,就放置在基準值的左邊,如果大於基準值,就放置在基準值的右邊。接著對得到的左右兩邊的值採用上述的做法,繼續通過遞迴呼叫。

二、實現的思路:

  • 先找準一個基準點
  • 建立兩個陣列,分別儲存左邊和右邊的數
  • 利用遞迴進行下次的比較

三、具體的實現程式碼

    function quickSort(arr){
        if(arr.length<=1){
            return arr;
        }else{
            var num=Math.floor(arr.length/2);
            var numValue=arr.splice(num,1);//找到基準值
            var left=[];
            var right=[];
            for(var i=0;i<arr.length;i++){
                if(arr[i]<numValue){
                    left.push(arr[i]);
                }else{
                    right.push(arr[i]);
                }
            }
            return quickSort(left).concat(numValue,quickSort(right));
        }
    }
    console.log(quickSort([12,3,4,5,90,54]));