// 公用陣列
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))
}
複製程式碼
冒泡和快速排序
相關文章
- 七、排序,選擇、冒泡、希爾、歸併、快速排序實現排序
- 排序法:選擇、冒泡、插入和快排排序
- 選擇排序和快速排序排序
- 堆排序和快速排序效能比較排序
- (建議收藏)2020最新排序演算法總結:冒泡、選擇、插入、希爾、快速、歸併、堆排序、基數排序排序演算法
- 7-7 冒泡法排序 (20分)排序
- Go實現氣泡排序和快速排序Go排序
- (三)陣列的定義、折半查詢、排序(選擇和冒泡)陣列排序
- 資料結構和演算法:03.冒泡、選擇排序資料結構演算法排序
- 排序演算法 - 快速插入排序和希爾排序排序演算法
- C語言排序 冒泡 選擇 快排C語言排序
- 排序之快速排序排序
- 單連結串列的排序(插入,選擇,冒泡)排序
- 排序:氣泡排序&快速排序排序
- 【JS面試向】選擇排序、桶排序、氣泡排序和快速排序簡介JS面試排序
- 快速排序排序
- 快速排序&&歸併排序排序
- 基礎排序(冒泡、選擇、插入)學習筆記排序筆記
- JavaScript氣泡排序+Vue視覺化冒泡動畫JavaScript排序Vue視覺化動畫
- 直播系統原始碼,實現快速排序和歸併排序原始碼排序
- 快速排序快速入門排序
- 排序演算法__快速排序排序演算法
- 排序演算法:快速排序排序演算法
- 四、歸併排序 && 快速排序排序
- 排序演算法 - 快速排序排序演算法
- javascript 快速排序JavaScript排序
- 快速排序javaScript排序JavaScript
- js 快速排序JS排序
- 快速排序-java排序Java
- LeetCode:快速排序LeetCode排序
- 快速排序法排序
- 分治—快速排序排序
- java 快速排序Java排序
- python 快速排序Python排序
- 常見的排序演算法:冒泡、快排、歸併排序演算法
- php插入排序,快速排序,歸併排序,堆排序PHP排序
- 從零開始學資料結構和演算法(一)冒泡與選擇排序資料結構演算法排序
- 排序演算法之 '快速排序'排序演算法
- 快速排序的效能和名字一樣優秀排序