继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

风吹尘
关注TA
已关注
手记 61
粉丝 9
获赞 1

课程名称: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)。

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

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

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

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

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP