JavaScript 数组排序
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、插入排序