js 冒泡排序與快速排序
阿新 • • 發佈:2019-03-23
其他 位置 [] arr 冒泡 console ray lse length
剛好今晚看了js的冒泡排序跟快速排序,趁著還沒忘記先記下來。
1. 冒泡排序:遍歷數組,每個元素都與後一個元素比較,如果大於下一個元素,則兩個元素位置調換。否則的話當前元素再與下下個元素比較,一直到 跟後面的元素都比較完。這個是升序的排序,降序則相反。
1 var arr = [1,23,4,12,32,455,122,3,43,13]; 2 3 function bubbleSort(arr) { 4 for (let i = 0; i < arr.length - 1; i++) { 5 for(let j = i + 1; j < arr.length; j++) {6 if (arr[i] > arr[j]) { 7 let maxVal = arr[i]; 8 arr[i] = arr[j]; 9 arr[j] = maxVal; 10 } 11 } 12 } 13 return arr; 14 } 15 console.log(‘bubble sort: ‘, bubbleSort(arr));
2. 快速排序:是對冒泡排序的一種改進。
- 先從數組裏面選出一個數,一般都是第一個數即array[0],然後再將其他數據分成兩個數組,小於array[0]的放在左邊數組,大於的放在右邊數組。
- 對兩個數組進行遞歸排序(按照1步驟),直到數組長度 <= 1,跳出遞歸(這個是主要條件,不然會陷入死循環)。
- 將數據 concat 成一個最終的數組。這個是升序的排序,降序則相反。
1 var arr = [1,23,4,12,32,455,122,3,43,13]; 2 function quickSort(arr) { 3 if (arr.length <= 1) { 4 // 註意加這個條件,不然死循環 5 return arr; 6 } 7 var reference = arr[0];8 var leftList = []; 9 var rightList = []; 10 arr.forEach(item => { 11 if (item > reference) { 12 rightList.push(item); 13 } else if (item < reference) { 14 leftList.push(item); 15 } 16 }) 17 18 return quickSort(leftList).concat(reference, quickSort(rightList)); 19 } 20 console.log(‘quick sort: ‘ , quickSort(arr))
js 冒泡排序與快速排序