首先列出二分查找最大次数的公式 |log2n|+1(|x|为不大于x的最大整数)
接下来谈一谈我的理解:
数组大小 查找的最大次数
1(2^ 0) 1
2(2^1) 2
4(2^2) 3

当数组大小为8时(a[0],a[1]…a[7]),(第一步)对半查找取a[3],之后数组划分为a[0],a[1],a[2]和a[4],a[5],a[6],a[7],因为我们要次数最大,因此自然在后者而不是前者中继续查找(毕竟4比3大)。(第二步)对a[4],a[5],a[6],a[7]这4个数进行对半查找,但是这种情况已在上面列出,对于4个长度的数组,我们最大查找次数为3.
(第三步)将第一步和第二步所进行的次数相加,1+3=4.
因此当数组长度为8时,查找的最大次数为4.

同理,数组长度为16时,对半查找一次后情况如同长度为8的数组,英雌查找的最大次数为4+1=5.
数组大小 查找的最大次数
由此可得 2^n n+1

讨论了基本情况之后,我们来讨论更复杂的情况
假设一个数x,2^n<x,
x<2^(n+1).
同样的操作,(第一步)进行对半查找,划分为两个数组,这是一次操作。(第二步)因为x<2^(n+1),所以划分所得到的两个数组,其中最大的一个数组一定小于
2^(n+1)/2,
即2^n,因此对其进行对半查找所需的操作次数一定小于n+1,因此等于n(此处假设公式 |log2n|+1成立,由公式 |log2n|+1推出次数等于n).
(第三步)将第一步和第二步的次数相加得1+n,所以x查找的最大次数与大小为2^n的数组相同,
可以得到
数组范围 查找的最大次数
2的n次方——2的(n+1)次方-1 n+1

也就是公式 |log2n|+1(|x|为不大于x的最大整数)。

浅谈对二分查找最大次数的理解相关推荐

  1. 如何写出正确的二分查找?——利用循环不变式理解二分查找及其变体的正确性以及构造方式...

    序言 本文以经典的二分查找为例,介绍如何使用循环不变式来理解算法并利用循环不变式在原始算法的基础上根据需要产生算法的变体.谨以本文献给在理解算法思路时没有头绪而又不甘心于死记硬背的人. 二分查找究竟有 ...

  2. 浅谈架构、操作系统、芯片的理解

    浅谈架构.操作系统.芯片的理解 序言 架构篇 操作系统篇 芯片篇 序言 从事物联网行业,总是会有一些概念上的疑惑,对此网上查阅了资料,结合自己理解,做了一些汇总,方便自己以后查阅. 架构篇 我们接触架 ...

  3. 未来生活里掌握计算机技术的重要性,浅谈计算机教育重要性的几点理解.doc

    浅谈计算机教育重要性的几点理解.doc 浅谈计算机教育重要性的几点理解 摘 要:本文主要阐述了计算机教育重要性的认识与理解,计算机教育如何适应现在与未来,是摆在我们面前刻不容缓的研究课题,需要我们认真 ...

  4. 计算思维不是计算机科学的核心素养,浅谈 对 信息技术学科核心素养 的理解...

    浅谈 对 信息技术学科核心素养 的理解 陆阳 贵州省 清镇市第一中学 551400 摘要:随着<中国学生发展核心素养>的发布,核心素养成为我国深化基础教育课程改革的新指向,作为连接总的核心 ...

  5. 浅谈数据的查找(二分查找)

    二分查找 以下是百度百科上的介绍: 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好:其缺点是要求待查表为有序表,且插入删除困难.因此,折半查找方法适用于不经常变动而查找频繁的有序列表. ...

  6. 二分查找算法代码详细理解

    前言 以前写了好多次的二分查找了,但对于一些细节感觉还是没有领悟道,比如while循环里面是否加上等号,mid是否要加一等等,每次写的时候虽然都过了,但总感觉是稀里糊涂的过的,这次特意来深度理解下二分 ...

  7. java gc 次数_浅谈如何减少GC的次数

    GC会stop the world.会暂停程序的执行,带来延迟的代价.所以在开发中,我们不希望GC的次数过多. 本文将讨论如何在开发中改善各种细节,从而减少GC的次数. (1)对象不用时最好显式置为 ...

  8. 浅谈从混沌工程引出的一点理解

    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可. 本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权. 起源 Chaos engineer ...

  9. 浅谈对Ubuntu桌面系统的实验性理解

    先声明,我对Ubuntu桌面系统还理解不到位,只是对其中的桌面系统中的管理器和桌面环境说一下我我自己验证的结果,有兴趣的可以验证一下,对于我自己很难去正确定义的名称只是觉得可能这样命名我都加了单引号去 ...

  10. 浅谈自己对Java代理模式的理解--即为什么要用怎么用

    首先,国际惯例,上Java代理模式的定义:  Java代理模式:对其他对象提供一种代理以控制对这个对象的访问.              定义很简单,就一句话,怎么去理解,不急,先听一个小故事: 故事 ...

最新文章

  1. java synchronized 参数_个人对synchronized锁的参数理解,如果有误望指出
  2. Node.js 安装报错提示“The error code is 2503“问题解决方法
  3. Python自然语言处理工具包推荐
  4. DNN:LSTM的前向计算和参数训练
  5. 在Java EE组件中使用骆驼路线
  6. 一表理清如何正确选择可视化图表,掌握后再也不怕用错图表
  7. selenium学习第一步(firefox安装firebug和firepath插件)
  8. 2017年北京共享单车数据(订单数据)
  9. 使用Python模拟鼠标操作
  10. vue项目结合iview4UI组件实现树状结构及复杂动态表头列表 Tree-Table 及复杂header 省市区树状表格联动 数据优化后台一次性返回一万条数据页面卡死问题
  11. 云数据库RDS与自建数据库相比到底有什么优势?
  12. 基于JPVideoPlayerKit的小视频播放
  13. 《自控力》第九章读书笔记
  14. 厨师 做菜 java_经验丰富的厨师有哪些日常做饭技巧?
  15. Linux下最全的redis安装教程
  16. 亿赛通文档安全云服务正式启动
  17. 我要翻译《Think Python》- 006 第四章 学习案例:接口设计
  18. GridView中DataSourceID和DataSource替换
  19. 一个超赞的开源的图片去水印解决方案
  20. 平摊分析(算法导论)

热门文章

  1. oeasy教您玩转vim - 90 - # 语法定义syntax
  2. php微信网页授权获取用户基本信息,微信网页授权获取用户基本信息
  3. Android 微信授权登陆
  4. 世界那么大,你又怎么能看的完呢
  5. [ERR] 1273 - Unknown collation: ‘utf8mb4_0900_ai_ci‘
  6. Progressive Layered Extraction (PLE)
  7. C#模拟union接收
  8. Macbook mac 系统安装 Anaconda的方法
  9. 关于word无法创建工作文件,请检查临时环境变量(本人已解决)
  10. LDO与电压基准源的精度对比