js快速排序,冒泡排序详细解析

快速排序
快速排序的算法是:
1,取出中间值;
2,把剩下的值跟中间值一一比较,比中间值小的放在left数组,比中间值大或相等的放在right数组
3,再把left 和 right 也按1.2的步骤切分,
4,利用递归的思想,直到切分到数组只剩下一个元素,终止递归
5,最后把数组拼接起来

function quickSort (arr) {
      if (arr.length <= 1) {
        return arr;//如果数组只有一个数,就直接返回;
      }
      let middleIndex = Math.floor(arr.length / 2);//找到中间数的索引值,如果是浮点数,则向下取整
      let middleValue = arr.splice(middleIndex, 1)[0];//找到中间数的值
      let left = [];
      let right = [];
      arr.map(item => {
        item < middleValue ? left.push(item) : right.push(item)
      })
      return quickSort(left).concat([middleValue], quickSort(right));//递归不断重复比较
    }
    console.log(quickSort([1, 56, 2, 3, 88, 5, 66, 6, 2, 832, 45, 37, 16, 2, 87]));
    //(15)[1, 2, 2, 2, 3, 5, 6, 16, 37, 45, 56, 66, 87, 88, 832]

冒泡排序
算法:
1,遍历数组,依次比较当前项和它的后面一项把大的放在后面,(第1项与第2项比较如果把较大的放在后面,第2再与第3比较,较大的放在后面…),每次遍历完最大的之就在最后面,相当于一次冒泡
2,把数组除了最后一项(最大值)外的剩余项按照1的方式,继续冒泡
3,每次比较都能找出数组中的最大值,比较数组length-1次就排序成功

 function bubbleSort (arr) {
      let len = arr.length;
      for (let i = 0; i < len; i++) {//比较length次
        for (let j = 0; j < len - 1 - i; j++) {
          if (arr[j] > arr[j + 1]) {        //相邻元素两两对比
            let temp = arr[j + 1];        //元素交换,大值放在后面
            arr[j + 1] = arr[j];
            arr[j] = temp;
          }
        }
      }
      return arr;
    }
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值