排序演算法——快速排序演算法
阿新 • • 發佈:2019-02-07
網際網路的大型公司還在火熱招聘中,參與了一次又一次的筆試,都不通過,我還是太菜!!!
作為程式設計人員,需要邁過去“資料結構與演算法”這個坎,畢竟,筆試不會真的很虧,加油吧,少些水,多點實操。
一、快速排序演算法思想:
從一組資料中找出一個基準值,一般是選擇中間值作為基準值,然後從左到右將值與基準值進行比較,如果小於基準值,就放置在基準值的左邊,如果大於基準值,就放置在基準值的右邊。接著對得到的左右兩邊的值採用上述的做法,繼續通過遞迴呼叫。
二、實現的思路:
- 先找準一個基準點
- 建立兩個陣列,分別儲存左邊和右邊的數
- 利用遞迴進行下次的比較
三、具體的實現程式碼
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]));