大前端算法入门之二分查找
现如今面试大厂的前端岗位对于应聘者的算法技巧要求越来越高,现在的前端已经不仅仅是制作页面就能够交差的,所以掌握算法技巧是很重要的,下面小千就来给大家介绍一个二分查找算法。
二分查找
所谓的算法都不是直接使用关键字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次。你学会了吗?
本文来自千锋教育,转载请注明出处
大前端算法入门之二分查找相关推荐
- 前端技术分享:算法入门之“二分算法”
现如今面试大厂的前端岗位对于应聘者的算法技巧要求越来越高,现在的前端已经不仅仅是制作页面就能够交差的,所以掌握算法技巧是很重要的,下面小千就来给大家介绍一个二分查找算法. 二分查找 所谓的算法都不是直 ...
- 常用十大算法 非递归二分查找、分治法、动态规划、贪心算法、回溯算法(骑士周游为例)、KMP、最小生成树算法:Prim、Kruskal、最短路径算法:Dijkstra、Floyd。
十大算法 学完数据结构该学什么?当然是来巩固算法,下面介绍了十中比较常用的算法,希望能帮到大家. 包括:非递归二分查找.分治法.动态规划.贪心算法.回溯算法(骑士周游为例).KMP.最小生成树算法:P ...
- c语言二分法查找一个数_算法简解-二分查找
读书不记录=没读,始终是我的信条·····最近因为要参加竞赛,发现自己真的差的很远,所以打算重新开始学习一遍算法及AI的相关数学知识,相信很多人都是闻数学,理工科色变,之前也是觉得上数理课太难了,真的 ...
- 算法前戏 递归 二分查找 列表查找
一.递归 概念: 函数直接或者间接的调用自身算法的过程,则该函数称为递归函数.在计算机编写程序中,递归算法对解决一大类问题是十分有效的. 特点: ①递归就是在过程或者函数里调用自身. ②在使用递归策略 ...
- java 二分搜索获得大于目标数的第一位_程序员数据结构算法编程,二分查找搜索算法的原理与应用介绍!...
本文来讲一种搜索算法,即二分搜索算法,通常在面试时也会被问到. 我们先来看一个例子,在图书馆通常是根据查到的编号去找书,可以在书架上按顺序一本本地查找,也可以找到一本书不符合预期时,再跳过一大部分书再 ...
- 常用算法1 - 快速排序 二分查找
1. 二分查找法: 二分查找法是对一组有序的数字中进行查找,传递相应的数据,进行比较查找到与原数据相同的数据,查找到了返回对应的数组下标,没有找到返回-1. 二分查找法要求数据为一组有序的序列(大到小 ...
- 算法(一):二分查找法
算法基础: 一.大O表示法: 指示算法的速度有多快,用于指出随数量的增大,算法的所需步骤增加的速度,常见的大O运行时间(时间复杂度): O(1)表示常数阶时间复杂度 O(log n),也叫对数时间复杂 ...
- python算法与数据结构-二分查找算法
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难. 因此折半查找方法适用于不经常变动而查找频繁的有序列表. 递归实现二分查找,代码如下所示: ...
- LeetCode 744. 寻找比目标字母大的最小字母(二分查找)
1. 题目 给定一个只包含小写字母的有序数组letters 和一个目标字母 target,寻找有序数组里面比目标字母大的最小字母. 数组里字母的顺序是循环的.举个例子,如果目标字母target = ' ...
最新文章
- 五道java小题,补更四道java小题
- 【Java】泛型中 extends 和 super 的区别?
- Android Studio 如何导入第三方jar包(整理)
- matlab中特殊符号如希腊字符
- EF Core使用Simple Logging输出日志
- linux tbb 安装_Ubuntu18.04 GCC9 安装
- 理解SQL SERVER中的分区表(转)
- 谷歌更新漏洞披露规则:不管补丁打没打,够90天才披露
- 牛客网暑期ACM多校训练营(第五场): A. gpa(01分数规划)
- Redis基础6(Redis6管道)
- cef 加载flash 弹框_cef 3.2357之后加载flash的方法
- 二维码的实现原理和实现过程[纠错码编码]
- top20万_主播收入榜(9.28)| 陌陌主播叶哥收入50万夺冠
- MCAL配置-Cdd_Ipc
- python爬虫登录微博账号_python模拟登录新浪微博 python新浪微博爬虫
- 【WEb数据采集之js埋码】
- Gos —— 实现线程和进程
- 计算机的cup颗数、核数、线程数
- 圣天诺SuperPro狗模拟视频语音教程
- 小猪的Python学习之旅 —— 19.Python微信自动好友验证,自动回复,发送群聊链接