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

【九月打卡】第9天 顺序搜索、二分搜索

标签:
JavaScript

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

课程内容:

今天学习的内容包括:
11-7 JavaScript 实现:顺序搜索——通过for循环判断是否存在,性能比较差,一般不使用。
11-8 JavaScript 实现:二分搜索——折半进行搜索,一般使用较多。

课程收获:

顺序搜索

顺序搜索的思路
  • 遍历数组。
  • 找到跟目标值相等的元素,就返回它的下标。
  • 遍历结束后,如果没有搜索到目标值,就返回-1。
  for (let i = 0; i < this.length; i++) {
    if(this[i] === item){
      return i
    }
  }
  return -1
顺序搜索的时间复杂度
  • 遍历数组是一个循环操作。
  • 时间复杂度:O(n)。

二分搜索

二分搜索的思路
  • 从数组的中间元素开始,如果中间元素正好是目标值,则搜索结束。
  • 如果目标值大于或则小鱼中间元素,则在大于或则小于中间元素的那一半数组中搜索。
  • 如果没有搜索到则返回-1。
let low = 0
  let high = this.length - 1
  while (low <= high){
    const mid = Math.floor((low + high) / 2)
    const element = this[mid]
    if(element < item){
      low = mid+1
    }else if(element>item){
      high = mid -1
    }else {
      return mid
    }
  }
  return -1
二分搜索的时间复杂度
  • 每一次比较都使搜索范围缩小一半。
  • 时间复杂度:O(logN)。

今天学习了 顺序搜索、二分搜索,二分搜索要比顺序搜索的时间复杂度要小,他的每次比较都使搜索范围缩小一半,故一般使用二分搜索,时间复杂度为O(logN)。对自己说一句,加油😀~

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

https://img1.sycdn.imooc.com//6320713b0001595819200892.jpg

https://img1.sycdn.imooc.com//632072880001b36619200892.jpg

点击查看更多内容
TA 点赞

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

评论

作者其他优质文章

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

100积分直接送

付费专栏免费学

大额优惠券免费领

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

举报

0/150
提交
取消