现如今面试大厂的前端岗位对于应聘者的算法技巧要求越来越高,现在的前端已经不仅仅是制作页面就能够交差的,所以掌握算法技巧是很重要的,下面小千就来给大家介绍一个二分查找算法。

二分查找

  所谓的算法都不是直接使用关键字indexOf fifindIncludes之类的, 都是原生循环来实现。二分 就是一拆为2 比如一个集合:let list = [1,2,3,4,5,6,7]二分就是在中间拆开变成两个数组list1=[1,2,3,4]list2 =[5,6,7]二分用在哪些地方?主要有有序数组的查找,但是说 list= [1.....10] 可能肉眼就知道。但是如果list = [1000,20000] 要找查找某个数位置 就观察不出来了,更甚至 list = 一千人的电话号码 要查找某一个。二分不是绝对的性能优秀 所有的优秀的 都是对比的。现在有一个集合放1到10 要找9的的位置,普通的循环要找9次 二分找几次呢?let list = [1,2,3,4,5,6,7,8,9,10]第一次中间数 5,6都可以 目标数9假设:middle =5target=99>5 下次查找的区间 就用二分的后者 [5,6,7,8,9,10]接着middle = 7target = 99>7 下次查找的区间 就继续二分为 [7,8,9,10]继续middle=8target=99>8 下次查找的区间 [8,9,10]继续middle = 9target= 9这样就找到9的位置都是折叠查找 查找的次数比较稳定长度为8的集合 最多3次 就能找到数log 8=2就是同理 16个数 最多需要几次 2 ? = 16 结果是4 最多查找四次log16= 4

不管开头还是结尾 还是中间 都稳定在 4次之前解决战斗,同理 100个数 找一个数 最多7次 40亿个数 找32次。你学会了吗?

本文来自千锋教育,转载请注明出处

大前端算法入门之二分查找相关推荐

  1. 前端技术分享:算法入门之“二分算法”

    现如今面试大厂的前端岗位对于应聘者的算法技巧要求越来越高,现在的前端已经不仅仅是制作页面就能够交差的,所以掌握算法技巧是很重要的,下面小千就来给大家介绍一个二分查找算法. 二分查找 所谓的算法都不是直 ...

  2. 常用十大算法 非递归二分查找、分治法、动态规划、贪心算法、回溯算法(骑士周游为例)、KMP、最小生成树算法:Prim、Kruskal、最短路径算法:Dijkstra、Floyd。

    十大算法 学完数据结构该学什么?当然是来巩固算法,下面介绍了十中比较常用的算法,希望能帮到大家. 包括:非递归二分查找.分治法.动态规划.贪心算法.回溯算法(骑士周游为例).KMP.最小生成树算法:P ...

  3. c语言二分法查找一个数_算法简解-二分查找

    读书不记录=没读,始终是我的信条·····最近因为要参加竞赛,发现自己真的差的很远,所以打算重新开始学习一遍算法及AI的相关数学知识,相信很多人都是闻数学,理工科色变,之前也是觉得上数理课太难了,真的 ...

  4. 算法前戏 递归 二分查找 列表查找

    一.递归 概念: 函数直接或者间接的调用自身算法的过程,则该函数称为递归函数.在计算机编写程序中,递归算法对解决一大类问题是十分有效的. 特点: ①递归就是在过程或者函数里调用自身. ②在使用递归策略 ...

  5. java 二分搜索获得大于目标数的第一位_程序员数据结构算法编程,二分查找搜索算法的原理与应用介绍!...

    本文来讲一种搜索算法,即二分搜索算法,通常在面试时也会被问到. 我们先来看一个例子,在图书馆通常是根据查到的编号去找书,可以在书架上按顺序一本本地查找,也可以找到一本书不符合预期时,再跳过一大部分书再 ...

  6. 常用算法1 - 快速排序 二分查找

    1. 二分查找法: 二分查找法是对一组有序的数字中进行查找,传递相应的数据,进行比较查找到与原数据相同的数据,查找到了返回对应的数组下标,没有找到返回-1. 二分查找法要求数据为一组有序的序列(大到小 ...

  7. 算法(一):二分查找法

    算法基础: 一.大O表示法: 指示算法的速度有多快,用于指出随数量的增大,算法的所需步骤增加的速度,常见的大O运行时间(时间复杂度): O(1)表示常数阶时间复杂度 O(log n),也叫对数时间复杂 ...

  8. python算法与数据结构-二分查找算法

    二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难. 因此折半查找方法适用于不经常变动而查找频繁的有序列表. 递归实现二分查找,代码如下所示: ...

  9. LeetCode 744. 寻找比目标字母大的最小字母(二分查找)

    1. 题目 给定一个只包含小写字母的有序数组letters 和一个目标字母 target,寻找有序数组里面比目标字母大的最小字母. 数组里字母的顺序是循环的.举个例子,如果目标字母target = ' ...

最新文章

  1. 五道java小题,补更四道java小题
  2. 【Java】泛型中 extends 和 super 的区别?
  3. Android Studio 如何导入第三方jar包(整理)
  4. matlab中特殊符号如希腊字符
  5. EF Core使用Simple Logging输出日志
  6. linux tbb 安装_Ubuntu18.04 GCC9 安装
  7. 理解SQL SERVER中的分区表(转)
  8. 谷歌更新漏洞披露规则:不管补丁打没打,够90天才披露
  9. 牛客网暑期ACM多校训练营(第五场): A. gpa(01分数规划)
  10. Redis基础6(Redis6管道)
  11. cef 加载flash 弹框_cef 3.2357之后加载flash的方法
  12. 二维码的实现原理和实现过程[纠错码编码]
  13. top20万_主播收入榜(9.28)| 陌陌主播叶哥收入50万夺冠
  14. MCAL配置-Cdd_Ipc
  15. python爬虫登录微博账号_python模拟登录新浪微博 python新浪微博爬虫
  16. 【WEb数据采集之js埋码】
  17. Gos —— 实现线程和进程
  18. 计算机的cup颗数、核数、线程数
  19. 圣天诺SuperPro狗模拟视频语音教程
  20. 小猪的Python学习之旅 —— 19.Python微信自动好友验证,自动回复,发送群聊链接

热门文章

  1. Maven学习总结(10)——使用Maven编译项目gbk的不可映射问题
  2. DataTable两列转换四列
  3. 不能忽视 php warning
  4. JSP状态管理 及 Cookie实例
  5. 关于 Intellij IDEA Ultimate Edition 14.1控制台中文乱码 解决
  6. Android Serializable与Parcelable原理与区别
  7. [2767]翻转排序 sdutOJ
  8. FreeBSD6.2详细安装图解
  9. CCPC-Wannafly Comet OJ 夏季欢乐赛(2019)E
  10. mysql之 MHA的binlog-server 创建