每日算法:冒泡,选择,插入排序第二次写

18 篇文章 0 订阅
15 篇文章 0 订阅

好久不复习,总是会卡耶 哈哈哈 再来一次

let arr = [9,4,5,64,2,5,811,7,53,6,3,2,1,22,11,55,88,77,88,99,100]
let arr1 = [9,4,5,64,2,5,811,7,53,6,3,2,1,22,11,55,88,77,88,99,100]
let arr2 = [9,4,5,64,2,5,811,7,53,6,3,2,1,22,11,55,88,77,88,99,100]

function sortBubble(arr){
  let finish = true;
  while (finish){//出口为不存在后一位比前一位大的情况,这里设置一个信号
    finish = false;
    for(let i=0;i<arr.length-1;i++){
      if(arr[i] > arr[i+1]){//遍历之后存在后一位比前一位大的情况则交换之
        let flag = arr[i];
        arr[i] = arr[i+1];
        arr[i+1] = flag;
        finish = true;
      }
    }
  }
  return arr;
}

function chooseSort(arr){
  let count = 0;
  while(count < arr.length){//遍历完则为出口
    let flag = count;
    for(let j=count;j<arr.length;j++){//这里找出后一段数组中最小的数,记住下标
      flag = arr[flag]<arr[j] ? flag:j;
    }
    //选择出最小的数来交换
    let ff = arr[count];
    arr[count] = arr[flag];
    arr[flag] = ff;
    count++;
  }
  return arr;
}

function insertSort(arr){
  for(let i=1;i<arr.length;i++){
    let flag = arr[i];//选出对比位置
    for(let j=i-1;j>=0;j--){
      if(flag > arr[j]){//和前面的进行比较,大于则插入前一位,结束
        arr[j+1] = flag;
        break;
      } else {
        if(j===0){//不大于等于0则arr[0]后移一位插入0位,结束
          arr[j+1] = arr[j]
          arr[j] = flag;
          break;
        } else {//不大于 不等于0 则后移一位空缺,继续比较
          arr[j+1] = arr[j]
        }
      }
    }
  }
  return arr;
}
console.info(sortBubble(arr));
console.info(chooseSort(arr1));
console.info(insertSort(arr2));

效果:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值