JavaScript 陣列排序
阿新 • • 發佈:2021-06-24
1、氣泡排序
兩次迴圈比較相鄰元素,交換位置
1 function popSort(arr) { 2 for (let i = 0; i < arr.length; i++) { 3 for (let j = i + 1; j < arr.length; j++) { 4 if (arr[i] > arr[j]) { 5 var temp = arr[i]; 6 arr[i] = arr[j]; 7 arr[j] = temp;8 } 9 } 10 } 11 return arr 12 }
2、選擇排序
找到陣列最小的元素,將它和陣列第一個元素交換位置,接下來,在剩下的元素中找到最小的元素,將它與陣列的第二個元素交換位置,往復如此,直到將整個陣列排序。基本點就是不斷地選擇剩餘元素之中的最小者。
1 function selectSort(arr) { 2 for (let i = 0; i < arr.length; i++) { 3 let min = arr[i];4 for (let j = i + 1; j < arr.length; j++) { 5 if (min > arr[j]) { 6 arr[i] = arr[j]; 7 arr[j] = min; 8 min = arr[i]; 9 } 10 } 11 } 12 13 return arr 14 }
3、快速排序
- 從陣列中選擇一個元素作為基準點
- 排序陣列,所有比基準值小的元素擺放在左邊,而大於基準值的擺放在右邊。每次分割結束以後基準值會插入到中間去。
- 最後利用遞迴,將擺放在左邊的陣列和右邊的陣列在進行一次上述的1和2操作
1 function quickSort(arr) { 2 if (arr.length <= 1) { 3 return arr; 4 } 5 let num = arr[0], left = [], right = []; 6 for (let i = 1; i < arr.length; i++) { 7 if (arr[i] < num) { 8 left.push(arr[i]); 9 } else { 10 right.push(arr[i]); 11 } 12 } 13 14 return quickSort(left).concat([num], quickSort(right)); 15 }
4、插入排序