零:資料準備,給定陣列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.對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最...