欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript實現(xiàn)快速排序的方法分析

 更新時間:2018年01月10日 09:04:23   作者:安靜的嘶吼  
這篇文章主要介紹了JavaScript實現(xiàn)快速排序的方法,結(jié)合實例形式分析了快速排序的原理、實現(xiàn)方法及相關(guān)操作注意事項,需要的朋友可以參考下

本文實例講述了JavaScript實現(xiàn)快速排序的方法。分享給大家供大家參考,具體如下:

思想:

通過分治思想、遞歸方法將數(shù)據(jù)依次分解為包含較小元素和較大元素的不同子序列

1.在數(shù)組中選擇一個元素為基準

2.對數(shù)組進行遍歷,小于基準的元素都移到基準的左邊,大于基準的元素都移到基準的右邊

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

實現(xiàn)代碼:

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));

注:  對于較小數(shù)組和較大數(shù)組分別遞歸調(diào)用sqort()函數(shù),當遞歸結(jié)束時候,再將較小的數(shù)組與基準以及較大的數(shù)組連接起來形成最終的有序數(shù)組并返回。

PS:這里再為大家推薦一款關(guān)于排序的演示工具供大家參考:

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

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript數(shù)學運算用法總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript數(shù)組操作技巧總結(jié)》、《JavaScript排序算法總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》及《JavaScript錯誤與調(diào)試技巧總結(jié)

希望本文所述對大家JavaScript程序設(shè)計有所幫助。

相關(guān)文章

最新評論