0
点赞
收藏
分享

微信扫一扫

前端经典面试题:手写冒泡排序

沐之轻语 2022-05-01 阅读 27

面试官:手写冒泡排序

方法一:从大到小排列

// 冒泡排序
let arr = [5, 3, 1, 4, 2];

function bubbleSort (arr) {
  let len = arr.length;
  for (let i = 0; i < len; i++) {
    for (let j = 0; j < len - i - 1; j++) {
      if (arr[j] < arr[j + 1]) {
        // 交换使用结构赋值
        [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
      }
    }
  }
  return arr;
}

console.log(bubbleSort(arr));//[ 5, 4, 3, 2, 1 ]

方法二:从小到大排列

// 冒泡排序
let arr = [5, 3, 1, 4, 2];

function bubbleSort (arr) {
  let len = arr.length;
  for (let i = 0; i < len; i++) {
    for (let j = 0; j < len - i - 1; j++) {
      if (arr[j] > arr[j + 1]) {
        // 交换 arr[j] 和 arr[j+1] 的值
        // 交换后,arr[j] 就排在了后面,所以后面的数字要向前移动一位
        // 使用交换的方法,可以让每次循环都把最大的数字放在最后
        let temp = arr[j];
        arr[j] = arr[j + 1];
        arr[j + 1] = temp;
      }
    }
  }
  return arr;
}

console.log(bubbleSort(arr));//[ 1, 2, 3, 4, 5 ]
举报

相关推荐

0 条评论