JavaScript实现三个常用排序算法

使用JavaScript实现冒泡排序,插入排序和快速排序

冒泡排序

  1. 让数组的当前项和后一项进行比较
  2. 如果当前项大于后一项,则交换两项的位置
let ary = [12, 15, 24, 18, 3]

function bubble(arr) {
  for(let i = 0; i < arr.length; i++) {
    for(let j = 0; j < arr.length - i - 1; j++) {
      if (arr[j] - arr[j + 1] > 0) {
        let temp = arr[j + 1]
        arr[j + 1] = arr[j]
        arr[j] = temp
      }
    }
  }
  return arr
}
    
ary = bubble(ary)
console.log(ary); // 3 12 15 18 24

插入排序

  1. 准备一个空数组,开始一个个的接收目标数组的值
  2. 在第一轮开始后的每一轮,将新插入的值与数组中每一项
  3. 进行比较,再排序
let ary = [14, 9, 23, 11, 18];
function insert(arr) {
  let handle = []
  handle.push(arr[0])
  for(let i = 1; i < arr.length; i++) {
    let A = arr[i]
    for(let j = handle.length - 1; j >= 0; j--) {
      let B = handle[j]
      if (A > B) {
        handle.splice(j + 1, 0, A)
        break
      }
      if (j === 0) {
        handle.unshift(A)
      }
    }
  }
  return handle
}
    
ary = insert(ary)
console.log(ary); // 9 11 14 18 23

快速排序

  1. 获取中间项,并将它从数组中移除,并准备两个空数组
  2. 剩余的每项对比中间项,小的放左边数组,大的放右边数组
  3. 递归调用执行此操作,直到全部分离成一个个单独元素的数组
  4. 将所有的单元素数组进行拼接
let ary = [3, 15, 27, 9, 18, 20];

function quick(arr) {
  if (arr.length <= 1) {
    return arr
  }
  let middleIndex = Math.floor(arr.length / 2)
  let middleValue =  arr.splice(middleIndex, 1)[0]
  let arrRight = []
  let arrLeft = []
  for(let i = 0; i < arr.length; i++) {
    let item = arr[i]
    item < middleValue ? arrLeft.push(item) : arrRight.push(item)
  }
  return quick(arrLeft).concat(middleValue, quick(arrRight))
}

console.log(quick(ary)); // 3 9 15 18 20 27
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值