本文實例講述了JS排序算法之希爾排序與快速排序實現方法。分享給大家供大家參考,具體如下:
希爾排序:
定義一個間隔序列,例如是5,3,1。第一次處理,會處理所有間隔為5的,下一次會處理間隔為3的,最后一次處理間隔為1的元素。也就是相鄰元素執行標準插入排序。
在開始最后一次處理時,大部分元素都將在正確的位置,算法就不必對很多元素進行交換,這是比插入元素高級的地方。
時間復雜度O(n*logn)
function shellSort(){ var N=arr.length; var h=1; while(h<N/3){ h=3*h+1;//設置間隔 } while(h>=1){ for(var i=h; i<N; i++){ for(j=i; j>=h && arr[j]<arr[j-h]; j-=h){ swap(arr, j, j-h); } } h=(h-1)/3; } } function swap(array, i, j){//兩個數調換 var temp =array[j]; array[j]=array[i]; array[i]=temp; }
快速排序:
通過遞歸的方式將數據依次分解成包含較小元素和較大元素的不同子序列,不斷重復這個步驟,直到所有數據都是有序的。
選一個基準值,小于基準值的放一個數組里面。大于基準值的放一個數組里面。
時間復雜度O(n*logn)
function quickSort(arr){ if(arr.length==0){ return []; } var left=[]; var right=[]; var p=arr[0]; for(var i=1; i<arr.length; i++){ if(arr[i]<p){ left.push(arr[i]); }else{ right.push(arr[i]); } } return quickSort(left).concat(p,quickSort(right)); }
上面是我整理給大家的,希望今后會對大家有幫助。
相關文章:
在javaScript中有關空值和假值的說法
在Webpack中有關自動化構建(詳細教程)
在微信小程序中如何實現圖片上傳等一系列功能
如何搭建前端通用的數據模擬框架(詳細教程)
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com