// 公用陣列
var arr = [1,2,4,2,1,9,8,5,3,6];
// 氣泡排序
// 思路,前一個數依次和後面的數比較,較小的往前移,需要兩層迴圈, 第一層迴圈到倒數第二位
for (var i = 0; i < arr.length - 1; i++) {
for (var j = i+1; j < arr.length; j++){
if (arr[i] > arr[j]) {
var temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
// return [1, 1, 2, 2, 3, 4, 5, 6, 8, 9]
// 快速排序
// 思路:先找到一個基準點(一般指陣列的中部),然後陣列被該基準點分為兩部分,依次與該基準點資料比較,如果比它小,放左邊;反之,放右邊。
// 左右分別用一個空陣列去儲存比較後的資料。最後遞迴執行上述操作,直到陣列長度<=1;
function sort(arr) {
if (arr.length<=1) return arr;
var midIndex = Math.floor(arr.length/2);
var midIndexVal = arr.splice(midIndex, 1);// 基準點元素陣列
var left = [], right = []; // left存放比基點小的陣列,right相反
for(var i = 0; i < arr.length; i++) {
if (arr[i] < midIndexVal[0]) {
left.push(arr[i])
}else {
right.push(arr[i])
}
console.log("第" +(++timer) + "次")
}
// 遞迴執行以上操作,對左右兩個陣列進行操作,知道陣列長度為<=1;
return sort(left).concat(midIndexVal, sort(right))
}
複製程式碼
冒泡和快速排序
相關文章
- 七、排序,選擇、冒泡、希爾、歸併、快速排序實現排序
- PHP排序演算法(插入,選擇,交換,冒泡,快速)PHP排序演算法
- 選擇法和冒泡法排序介面排序
- 排序演算法Python(冒泡、選擇、快速、插入、希爾、歸併排序)排序演算法Python
- js實現兩種實用的排序演算法——冒泡、快速排序JS排序演算法
- 排序法:選擇、冒泡、插入和快排排序
- 選擇排序和快速排序排序
- 排序演算法之冒泡,選擇,插入和希爾排序演算法
- JavaScript 排序,不只是冒泡JavaScript排序
- 堆排序和快速排序效能比較排序
- 指標對陣列排序選擇法和冒泡法指標陣列排序
- 冒泡,選擇排序法(C#)排序C#
- 排序演算法 - 快速插入排序和希爾排序排序演算法
- Go實現氣泡排序和快速排序Go排序
- 7-7 冒泡法排序 (20分)排序
- 排序演算法集:冒泡、插入、希爾、快速(陣列實現、連結串列實現)排序演算法陣列
- (建議收藏)2020最新排序演算法總結:冒泡、選擇、插入、希爾、快速、歸併、堆排序、基數排序排序演算法
- 資料結構和演算法:03.冒泡、選擇排序資料結構演算法排序
- (三)陣列的定義、折半查詢、排序(選擇和冒泡)陣列排序
- C語言排序 冒泡 選擇 快排C語言排序
- 排序之快速排序排序
- 【JS面試向】選擇排序、桶排序、氣泡排序和快速排序簡介JS面試排序
- 排序:氣泡排序&快速排序排序
- 快速排序排序
- 【分治演算法】歸併排序,快速排序和漢諾塔演算法排序
- 歸併和快速排序思想的延伸排序
- 快速排序&&歸併排序排序
- 單連結串列的排序(插入,選擇,冒泡)排序
- JavaScript氣泡排序+Vue視覺化冒泡動畫JavaScript排序Vue視覺化動畫
- 插入、冒泡、歸併、堆排序、快排總結排序
- python排序演算法的實現-冒泡Python排序演算法
- 快速排序快速入門排序
- 直播系統原始碼,實現快速排序和歸併排序原始碼排序
- 四、歸併排序 && 快速排序排序
- 排序演算法__快速排序排序演算法
- 排序演算法:快速排序排序演算法
- 排序演算法-快速排序排序演算法
- 排序演算法——快速排序排序演算法