在这里插入代码片
let arr = [5,4,3,2,1]
// 冒泡排序:相邻两项相比i与i+1,双循环,循环轮数i,相比次数j 判断arr[j]>arr[j+1] 解构赋值.
// -1 是性能优化
// i i+1 =>交换位置
// 第一项比第二项大就向后排序
function mp(arr) {
for (let i = 0; i < arr.length; i++) { // 循环轮数
for (let j = 0; j < arr.length-1-i; j++) {// 对比次数
if (arr[j]>arr[j+1]) {
[arr[j],arr[j+1]] = [arr[j+1],arr[j]]
}
}
}
return arr
}
console.log(mp(arr), '冒泡排序 ');
// 插入排序
// 找到你要排序的元素 ,找到合适的位置
// 假设 第一个已经排序好的位置
function cr(arr) {
for (let i = 1; i < arr.length; i++) {
let v= arr[i] // 存储
let j = i - 1 // 从后向前搜索,用于插入顺序
while(j>=0&& v<arr[j]) {
arr[j+1] = arr[j]; // 替换位置
j--
}
arr[j+1] = v
// 不满足循环,就把缓存里的变量 复制给当前元素
}
return arr
}
console.log(cr(arr),'插入排序');
// 选择排序,找到数组中最小项,直接放到最前面。
function xz (arr) {
let minNum = 0
for (let i = 0; i < arr.length; i++) {// 第一层循环,拿的是数组的每一项
// 控制循环次数
minNum = i // 第0向开发,要和剩余项对比
for (var j = i; j < arr.length; j++) {// 循环对比项,是随着i变化而变化的
// j 要从第i向开始
if(arr[minNum]>arr[j]){
minNum = j;
}
}
if(minNum!==i) { // 每次 第二层for循环完毕 会执行这里
[arr[minNum],arr[i]] = [arr[i],arr[minNum]]
}
}
return arr
}
console.log(xz(arr),'选择排序');
// es6排序 函数sort
// 数组.sort((a,b)=>a-b) ;改变原数组
//挂载原型
Array.prototype.MySort = function() {
return this.sort((a, b) => a - b) //箭头函数不加大括号时指向这个函数的返回值,可以不写return关键字
}
let Arr = [56, 21, 88, 10, 5, 77]
Arr.MySort() //调用
console.log(Arr, '函数sort排序');
前端排序 - 冒泡、插入、选择三个经典排序,以及es6sort排序
最新推荐文章于 2024-06-28 10:22:03 发布