js實現兩種實用的排序演算法 冒泡 快速排序

2021-09-07 10:50:58 字數 1395 閱讀 8729

零:資料準備,給定陣列arr=[2,5,4,1,7,3,8,6,9,0];

一:冒牌排序

1思想:氣泡排序思想:每一次對比相鄰兩個資料的大小,小的排在前面,如果前面的資料比後面的大就交換這兩個數的位置

要實現上述規則需要用到兩層for迴圈,外層從第乙個數到倒數第二個數,內層從外層的後面乙個數到最後乙個數

2特點:排序演算法的基礎。簡單實用易於理解,缺點是比較次數多,效率較低。

3實現:

var times=0

;var bubblesort=function(arr)

console.log("第

"+(++times)+"

次排序後:

"+arr);}}

return

arr;

}console.log(

"the result is:

"+bubblesort(arr));

4效率:陣列長度10,排序次數45次。

二:快速排序

1思想:快速排序思想:先找到乙個基準點(一般指數組的中部),然後陣列被該基準點分為兩部分,依次與該基準點資料比較,如果比它小,放左邊;反之,放右邊。

左右分別用乙個空陣列去儲存比較後的資料。最後遞迴執行上述操作,直到陣列長度<=1;

2特點:快速,常用。缺點是需要另外宣告兩個陣列,浪費了記憶體空間資源。

3實現:

var times=0

;var quicksort=function(arr)

var midindex=math.floor(arr.length/2);//

取基準點

var midindexval=arr.splice(midindex,1);//

取基準點的值,splice(index,1)函式可以返回陣列中被刪除的那個數arr[index+1]

var left=;//

存放比基準點小的陣列

var right=;//

存放比基準點大的陣列

//遍歷陣列,進行判斷分配

for(var i=0;i)

else

console.log("第

"+(++times)+"

次排序後:

"+arr);

}//遞迴執行以上操作,對左右兩個陣列進行操作,直到陣列長度為<=1;

return

quicksort(left).concat(midindexval,quicksort(right));

};console.log(quicksort(arr));

4效率:陣列長度10,排序次數22次。

三:總結

兩種方法各有優缺點,但是這兩種方法作為程式設計師必須掌握,因為一種是最基礎的,另一種是最常用的,面試或者日常都會碰到。

js實現兩種實用的排序演算法 冒泡 快速排序

零 資料準備,給定陣列arr 2,5,4,1,7,3,8,6,9,0 一 冒牌排序 1思想 氣泡排序思想 每一次對比相鄰兩個資料的大小,小的排在前面,如果前面的資料比後面的大就交換這兩個數的位置 要實現上述規則需要用到兩層for迴圈,外層從第乙個數到倒數第二個數,內層從外層的後面乙個數到最後乙個數 ...

兩種氣泡排序

泡泡往前冒 for int i 1 i score.length i 例如 for int i 1 i score.length i system.out.print 第 i 次排序的結果 for int j 0 j score.length j system.out.println for int...

氣泡排序演算法的兩種優化

氣泡排序 三種實現,兩種優化 首先,我們先介紹bubblesort 就是氣泡排序,氣泡排序大家應該最熟悉不過了 氣泡排序演算法的運作如下 從後往前 1.比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。2.對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最...