数组排序方法
1.冒泡排序法
var arr = [1,4,54,6,2,3,19] var medium = null; for (var j = 0; j <= arr.length-1; j++) { var flag = true; for (var i = 0; i <= arr.length-1-j; i++) { if (arr[i] > arr[i+1]) { medium = arr[i]; arr[i] = arr[i+1]; arr[i+1] = medium; flag = false } } if (flag) { break } } 结果: [1, 2, 3, 4, 6, 19, 54]
2.sort() 方法
var arr = [1,12,4,5,23]; arr.sort((a,b)=>{ return a>b ? 1 : -1 }) 结果 : [1, 4, 5, 12, 23]
3.快速排序法 (原理是二分法)
/* *首先要了解concat()函数和函数的递归操作 *1.找一个基准点 *2.建立两个数组,分别存储左边和右边的数组 *3.利用递归,进行拆分,用concat()函数将其拼接起来 */ function quick(arr) { if (arr.length<=1){return arr} // 取数组的中间项的下标 var middleIndex = Math.floor(arr.length / 2); // 取出数组的中间项,并把该项从数组中删除,且原数组受到影响 var middle = arr.splice(middleIndex,1)[0]; // 声明两个数组,分别用来存在比middle小和大的值 var leftArr = []; var rightArr = []; for (var i = 0; i < arr.length; i++) { if (arr[i] <= middle) { leftArr.push(arr[i]) } else if (arr[i] > middle) { rightArr.push(arr[i]) } } // 使用递归,并把三个数组拼接起来 return quick(leftArr).concat([middle],quick(rightArr)) }
4.插值排序法
function insertSort(arr) { //从第二个数开始,依次插入 for (var i = 1; i < arr.length; i++) { //判断目标元素是否小于前一个元素 if (arr[i] < arr[i - 1]) { var current = arr[i]; var j = i - 1; //从有序数列从后往前对比,如果目标元素小于与之对比的当前元素,当前元素位置往后挪一位 while (j >= 0 && current < arr[j]) { arr[j + 1] = arr[j]; j--; } //插入 arr[j + 1] = current; } } return arr; }