js简单算法

157 阅读1分钟

冒泡排序

  • 概念 每一次遍历都会比较相邻的两个值, 根据设置的条件进行对位置对调。
  • 实现
  1. 设置两个for循环
  2. 外循环for 需要 n 个数据 n 次冒泡
  3. 内循环for 冒泡的比较次数,在这层循环对比两个相邻的值,当满足条件时通过一个临时变量存值,用于替换两个值的位置。
  • 代码运行过程
    • 第一次遍历 [2,1,5,4,6,0]
    • 第二次遍历 [2,5,4,6,1,0]
    • 第三次遍历 [5,4,6,2,1,0]
    • 第四次遍历 [5,6,4,2,1,0]
    • 第五次遍历 [6,5,4,2,1,0]
  • 优化 内循环len-i目的就是避免不必要的计算,因为外层每循环一次就会将符合条件的值进行位置替换,因此每次都减少一次内循环。
// 倒序
let arr = [1,2,0,5,4,6]
let item = ''
for (let i = 0; i < arr.length-1; i++) {
    for (let j = 0; j<arr.length-i; j++) {
        if (arr[j] < arr[j+1]) {
            item = arr[j]
            arr[j] = arr[j+1]
            arr[j+1] = item
        }
    }
}
console.log(arr)
// 输出[6,5,4,2,1,0]