一、sort()排序
sort() 方法用于对数组的元素进行排序,这种方法会改变原数据。
// sort排序
let arr = [5, 6, 2, 4, 7, 9];
// 参数一 减 参数二 正序
// 参数二 减 参数一 倒序
let sortArr = arr.sort((a, b) => a - b);
console.log(sortArr);
// 效果:[2, 4, 5, 6, 7, 9]
二、选择排序
和冒泡相仿,两次循环,第一次循环存储下标,再次循环依次作比较,只要小于或大于每轮下标位置的数值,则直接排到前面,形成排序效果,如下:
// 选择排序
let arr = [5, 6, 2, 4, 7, 9, 15];
for (let i = 0; i < arr.length - 1; i++) {
let minNum = i; // 用于存储最小的下标,为第一个数字
// 再次循环,注意:循环初始值为前一轮下标的后一位,长度也得减少一次
for (let j = i + 1; j < arr.length; j++) {
// 如果后面循环的数值,有小于第一位数值的,则直接赋值到最前面,依次循环
if(arr[j] < arr[minNum]) {
minNum = j;
}
}
// 二维数组的方式将下标的位置赋值选出来的值,即可形成排序
[arr[i], arr[minNum]] = [arr[minNum], arr[i]]
}
console.log(arr);
三、冒泡排序
数组中的数据前后两两进行对比,如果后面一个数据小于或大于前面一个则进行交换。
// 冒泡排序
let arr = [5, 6, 2, 4, 7, 9, 15];
// 因为7个数,所以长度减去一次为最大循环次数
for (let i = 0; i < arr.length -1; i++) {
// 二次循环,注意:再减去外层的循环次数,向后依次两两相互比较转换;
for (let j = 0; j < arr.length - i - 1; j++) {
// 当前一个值大于后一个值
if(arr[j] > arr[j + 1]) {
// 定义变量,以赋值的形式前后交换,直到换到最小的在前面,左右再无比较,则循环结束形成排序结果
let temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
console.log(arr);
// 效果:[2, 4, 5, 6, 7, 9, 15]