四种js数组排序
``
var a = [1, 3, 6, 3, 23, 76, 1, 34, 222, 6, 456, 221]; // 冒泡排序 通过双循环2 2 比较更换位置进行排序 function pop(arr) { const arr1 = arr; for (let i = 0; i < arr1.length; i++) { for (let j = 0; j < i; j++) { if (arr1[i] < arr1[j]) { const temp = arr1[j]; arr[j] = arr1[i]; arr[i] = temp; } } } return arr1; } // 快速排序 /** * 选确定数组长度 * 取中间基数作为参考目标,设置左右2边空数组 * 循环原数组和基数进行比较 * 递归并合并左右2边数组 * **/ function quickSort(arr) { if (arr.length <= 1) { return arr; } const j = Math.floor(arr.length / 2); const infoNum = arr.splice(j, 1)[0]; const left = []; const right = []; arr.map((item) => { if (item > infoNum) { right.push(item); } else { left.push(item); } }); return quickSort(left).concat(infoNum, quickSort(right)); } // 插入排序 /** * 设置一个变量记录状态,一个空数组负责存排序后的数据 * 未排序和排序的数组进行循环比较,把旧数组中的每一项都和新数组进行比较, * 如果比其中某一项小就插入当前位置 * 如果没有就插入最后的位置 * */ function insertSort(arr) { const temp = []; for (let i = 0; i < arr.length; i++) { let flag = false; for (let j = 0; j < temp.length; j++) { if (arr[i] < temp[j]) { temp.splice(j, 0, arr[i]); flag = true; break; } } if (!flag) { temp.push(arr[i]); } } return temp; } // 选择排序 /** * 设置一个变量临时存储数据,一个变量记录最小数据位置 * 循环 用第二个数据和第一个数据进行比较 如果小于等于这个元素就把位置记录 * 变量 temp 赋值成当前循环的元素 当前元素赋值成最小元素 最小元素赋值成当前元素 * 这样交换位置 */ function selectSort(arr) { let temp; let minIndex; for (let i = 0; i < arr.length - 1; i++) { minIndex = i; for (let j = i + 1; j < arr.length; j++) { if (arr[j] <= arr[minIndex]) { minIndex = j; } } temp = arr[i] arr[i] = arr[minIndex] arr[minIndex] = temp } return arr }