排序的几种方式for while 还有sort

dayDif() {
      var a = [
        3, 11, 19, 14, 9, 19, 43, 432432, 43234, 231, 321321, 323, 54, 546,
      ];
      效率最低的
      // for (let i = 0; i < a.length; i++) {
      //   for (let j = 0; j < a.length; j++) {
      //     console.log(this.num++, 196);
      //     if (a[j] > a[j + 1]) {
      //       [a[j], a[j + 1]] = [a[j + 1], a[j]];
      //       //console.log(this.num++);
      //     }
      //   }
      // }

      效率和下面差不多
      // for (let i = a.length - 1; i >= 0; i--) {
      //   //外层控制的是执行的次数以及内层的j最大值
      //   for (let j = 0; j <= i; j++) {
      //     //每一躺从0到j
      //     console.log(this.num++,105);
      //     if (a[j] > a[j + 1]) {
      //       [a[j], a[j + 1]] = [a[j + 1], a[j]];
      //     }
      //   }
      // }

      和上面差不多
      // for (let i = 0; i < a.length - 1; i++) {
      //   let indexMin = i;
      //   for (let j = i; j < a.length; j++) {
      //     console.log(this.num++,104);
      //     // 如果当前这个元素 小于最小值的下标 就更新最小值的下标
      //     if (a[j] < a[indexMin]) {
      //       indexMin = j;
      //     }
      //   }
      //   // 避免自己和自己进行交换
      //   if (indexMin !== i) {
      //     // 进行交换数据
      //     [a[i], a[indexMin]] = [a[indexMin], a[i]];
      //   }
      // }

      //插入排序 从第二个数,开始往前比较 如它大就往后排 以此类推进行到最后一个数
      for (let i = 1; i < a.length; i++) {
        // 获取第二个元素
        const temp = a[i];
        let j = i;
        while (j > 0) {
          console.log(this.num++, 32);
          // 如果当前元素小于前一个元素 就开始往后移动
          if (a[j - 1] > temp) {
            a[j] = a[j - 1];
          } else {
            // 否则就跳出循环
            break;
          }
          // 递减
          j--;
        }
        // 前一位置赋值为当前元素
        a[j] = temp;
      }

      console.log(a);
    },

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端小云儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值