JavaScript實現快速排序的方法分析,javascript實現排序

來源:互聯網
上載者:User

JavaScript實現快速排序的方法分析,javascript實現排序

本文執行個體講述了JavaScript實現快速排序的方法。分享給大家供大家參考,具體如下:

思想:

通過分治思想、遞迴方法將資料依次分解為包含較小元素和較大元素的不同子序列

1.在數組中選擇一個元素為基準

2.對數組進行遍曆,小於基準的元素都移到基準的左邊,大於基準的元素都移到基準的右邊

3.對基準左邊和右邊的兩個子集,不斷重複前兩步,直到所有子集只剩下一個元素為止

實現代碼:

function sqort(arr){ if(arr.length===0){ return [];}var left=[];var right=[];var pivot=arr[0];//(基準以首元素)for(var i=1;i<arr.length;i++){ if(arr[i]<pivot){ left.push(arr[i]);}else{ right.push(arr[i]);}}return sqort(left).concat(pivot,qsort(right));//遞迴}var a=[];for (i=0;i<10;++i){a[i]=Math.floor(Math.random()*100+1);}console.log(a);console.log(sqort(a));//(基準以中間元素的情況)function sqort(arr){ if(arr.length<=1){ return arr;}var left=[];var right=[];var pivotIndex=Math.floor(arr.length/2);var pivot=arr.splice(pivotIndex,1)[0];//(基準以中間元素)for(var i=1;i<arr.length;i++){ if(arr[i]<pivot){ left.push(arr[i]);}else{ right.push(arr[i]);}}return sqort(left).concat(pivot,sqort(right));//遞迴}var a=[12,34,23,78,34,26];console.log(a);console.log(sqort(a));

注:  對於較小數組和較大數組分別遞迴調用sqort()函數,當遞迴結束時候,再將較小的數組與基準以及較大的數組串連起來形成最終的有序數組並返回。

PS:這裡再為大家推薦一款關於排序的示範工具供大家參考:

線上動畫示範插入/選擇/冒泡/歸併/希爾/快速排序演算法過程工具:
http://tools.jb51.net/aideddesign/paixu_ys

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.