为了账号安全,请及时绑定邮箱和手机立即绑定

【九月打卡】第7天 选择排序、插入排序

标签:
JavaScript

课程名称:JavaScript版数据结构与算法
课程章节:第11章 进阶算法之“搜索排序”
主讲老师:lewis

课程内容:

今天学习的内容包括:
11-3 JavaScript 实现:选择排序——双层for循环处理即可。
11-4 JavaScript 实现:插入排序——通for循环,while进行插入排序。

课程收获:

选择排序

选择排序的思路
  • 找到数组中的最小值,选中它并将其放置在第一位。
  • 接着找到第二小的值,选中它并将其放置在第二位。
  • 以此类推,执行 n-1 轮。
for (let j = 0; j < this.length - 1; j++) {
    let tempIndex = j
    const temp = this[j]
    for (let i = j + 1; i < this.length - j; i++) {
      if (this[i] < temp) {
        tempIndex = i
      }
    }
    this[j] = this[tempIndex]
    this[tempIndex] = temp
  }

内部for循环开始为从j+1开始,这样就不会从j开始判断哪个是最小位从而提升算法时间复杂度。选择排序和冒泡排序一样性能比较差,所以基本不使用。

选择排序的时间复杂度
  • 两个嵌套循环。
  • 时间复杂度:O(n^2)。

插入排序

插入排序的思路
  • 从第二个数开始往前比。
  • 比它大就往后排。
  • 以此类推进行到最后一个数。
for (let i = 1; i < this.length; i++) {
    const temp = this[i]
    let j = i
    while (j>0){
      if(this[j-1] > temp){
        this[j] = this[j-1]
      }else{
        break
      }
      j--
    }
    this[j] = temp
  }
插入排序的时间复杂度
  • 两个嵌套循环。
  • 时间复杂度:O(n^2)。

今天学习了 选择排序、插入排序,跟着老师的讲解和动画的演示,感觉排序算法好像也就是那么回事,还是很好理解的,我相信我也算是初窥算法大门了,还需继续学习提升,对自己说一句,加油😀~

坚持打卡,坚持学习!明天见💪~

https://img1.sycdn.imooc.com/631d42810001702419200902.jpg

https://img1.sycdn.imooc.com/631d42b6000172b319200902.jpg

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消