————— 第二天 —————

什么意思呢?我们来举两个栗子:

给定一个有序数组

2,5,7,9,12,14,20,26,30

Case 1:

Case 2:

————————————

为什么说这样效率最高呢?因为每一次选择数字,无论偏大还是偏小,都可以让剩下的选择范围缩小一半。

给定范围0到1000的整数:

第一次我们选择500,发现偏大了,那么下一次的选择范围,就变成了1到499:

第二次我们选择250,发现还是偏大了,那么下一次的选择范围,就变成了1到249:

第三次我们选择125,发现偏小了,那么下一次的选择范围,就变成了126到249:

以此类推,最坏的情况需要猜测多少次呢?答案是 log1000 = 10次,也就是让原本的区间范围进行10次 “折半”。

刚才我们所分析的是猜数字的游戏。如果我们把场景转换成最初的面试问题:在包含1000个整型元素的有序数组中查找某个特定整数,又该如何去做呢?

同样道理,我们可以首先判断下标是499的元素(因为数组下标从0开始,到999结束),如果元素大于要查找的整数,我们再去判断下标是249的元素,然后判断下标124的元素......以此类推,直到最终找到想要的元素,或者选择范围等于0为止。

上述这个过程,就是所谓的二分查找算法,查找的时间复杂度是log(n)。

转载于:https://www.cnblogs.com/CQqf2019/p/10983481.html

漫画:什么是二分查找相关推荐

  1. 再也不怕女朋友问我二分查找了!【手绘漫画】图解二分查找(修订版)(LeetCode 704题)

    文章目录 图解算法与数据结构 1.前言 2.代码 3.实例(LeetCode 704题) 图解算法与数据结构 1.前言 上次讲到的更的二分查找模板在很多地方让我使用起来不是特别的舒服,感谢B站上的y大 ...

  2. 《漫画算法2》源码整理-3 二分查找 跳跃表

    二分查找 public class BinarySearch {public static int binarySearch(int[] array, int target) {//查找范围起点int ...

  3. 《漫画算法2》源码整理-1 二分查找树 AVL树 红黑树

    二分查找树 public class BinarySearchTree {private Node root;//查找结点public Node search(int data) {Node targ ...

  4. 漫画:什么是二分查找?

    戳蓝字"CSDN云计算"关注我们哦! 作者 | 蠢萌的小灰 来源 | 程序员小灰 -----  第二天  ----- 什么意思呢?我们来举两个栗子: 给定一个有序数组 2,5,7, ...

  5. 算法图解/二分查找/简单查找/选择排序/递归算法/快速排序算法/

    大 O 表示法 大 O 表示法在讨论运行时间时,log 指的都是 log2 大 O 表示法指出了算法有多快,让你能够比较操作数,它指出了算法运行时间的增速,而并非以秒为单位的速度. 大 O 表示法指出 ...

  6. LeetCode简单题之二分查找

    题目 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1. 示例 1: 输入: n ...

  7. 二分查找模板全面总结

    二分查找 二分法的引入 情形1 1.X的平方根 2.搜索旋转排序数组 情形2 1.第一个错误的版本 2.寻找峰值 3.寻找旋转排序数组中的最小值 情形3 在排序数组中查找第一个和最后一个位置 当遇到查 ...

  8. 数据结构与算法(8-2)有序表查找(折半查找(二分查找)、插值查找)

    目录 一.折半查找(二分查找) 二.插值查找 总代码 一.折半查找(二分查找) 原理:一次次折半,不断向着查找值的位置靠近 . 适用场景:有序(必须) 流程:开始时,min标志首,max标志尾,med ...

  9. 二分查找算法的一点改进

    在计算机科学中,二分查找,是一种在有序数组中查找某一特定元素的搜索算法.这种搜索算法每一次比较都使搜索范围减半.第一篇二分查找的论文发表于1946年,然而第一个没有bug的二分查找算法却是在1962年 ...

最新文章

  1. 从零开始学ASP.NET(基础篇)
  2. gis中的擦除_擦除—帮助 | ArcGIS for Desktop
  3. CRichEditCtrl 好象没有复制、粘贴的功能(Ctrl+C、Ctrl+v都不好用
  4. 安卓WebView加载网页不显示或者乱跳问题
  5. Latex指南(part1)--利用beamer制作学术报告文稿
  6. if else语句_你敢信?if语句执行完,竟然也会执行else语句
  7. 奇妙的曲线--希尔伯特曲线
  8. P3391-[模板]文艺平衡树【Splay】
  9. 链式存储结构 php,【PHP 实现数据结构】链式队列
  10. MySQL:MySQL InnoDB引擎
  11. Silverlight C# 游戏开发:项目开发实例和小技巧索引
  12. C 语言基础——程序运行时间的计算
  13. 关于HashMap,HashTable,HashSet浅析
  14. 互联网盈利模式研习笔记之一:流量变现
  15. tomcat启动时报错ports are invalid,默认端口不要为-1
  16. wpf Content数据绑定StringFormat起作用的原理和解决(转)
  17. 汇编指令大全(带注释)
  18. VC密码正确无法登陆。证书过期。处理。
  19. chrome浏览器小恐龙自动跑
  20. Java集合框架全解

热门文章

  1. [LeetCode-JAVA] Reverse Nodes in k-Group
  2. .Net平台Winform两个ComboBox控件绑定同一个数据源
  3. ASP.NET MVC 音乐商店 - 9. 注册和结账
  4. 【我看Hibernate】Hibernate 介绍及其简单应用
  5. 办公族的健康提醒脚本
  6. 关于ASP.NET页面打印技术的总结
  7. R | 对亚马逊新总部可能位置进行可视化
  8. c语言中如何表示矩阵的乘法,c语言矩阵相乘
  9. python中文字符串编码_浅谈python下含中文字符串正则表达式的编码问题
  10. php mysql可以跨站_PHP防跨站之open_basedir目录设置