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

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

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

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

思想:

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

1.在數(shù)組中選擇一個(gè)元素為基準(zhǔn)

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

3.對(duì)基準(zhǔn)左邊和右邊的兩個(gè)子集,不斷重復(fù)前兩步,直到所有子集只剩下一個(gè)元素為止

實(shí)現(xiàn)代碼:

function sqort(arr){
 if(arr.length===0){
 return [];
}
var left=[];
var right=[];
var pivot=arr[0];//(基準(zhǔn)以首元素)
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));
//(基準(zhǔn)以中間元素的情況)
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];//(基準(zhǔn)以中間元素)
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));

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

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

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

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

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

相關(guān)文章

最新評(píng)論