JavaScript如何實(shí)現(xiàn)快速排序

小編給大家分享一下JavaScript如何實(shí)現(xiàn)快速排序,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括朔城網(wǎng)站建設(shè)、朔城網(wǎng)站制作、朔城網(wǎng)頁制作以及朔城網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,朔城網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到朔城省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

具體如下:

思想:

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

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

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

3.對基準(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));

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

以上是“JavaScript如何實(shí)現(xiàn)快速排序”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

本文標(biāo)題:JavaScript如何實(shí)現(xiàn)快速排序
本文地址:http://muchs.cn/article30/jchjpo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、建站公司網(wǎng)站設(shè)計(jì)公司、靜態(tài)網(wǎng)站App設(shè)計(jì)、全網(wǎng)營銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司