• 【二分查找生活应用】


    二分查找
    1、例如:抱着一堆书走出图书馆的时候,检测器突然响了(其中一本书没有消磁),现在要检查哪一本书没有消磁。
    (1)比较耗时的方式就是,一本一本书用检测器都检查下。
    (2)比较快的方式是:分成相等的2份,分别给检测器检测。引起报警的那一份,再分成2份,分别给检测器检测,重复这个过程,直到找到引起报警那本书。
        第二种方式就体现了二分查找思想。
    2、二分查找依赖的是顺序表结构,简单的说就是数组。(二分查找需要按照下标随机访问元素,用其他数据结构,例如链表的话,时间复杂度会变高)
    3、二分查找针对的是有序数据。
    4、数据量太小不适合二分查找(因为此时遍历、二分查找花的时间差不多)
    5、数据量太大也不适合二分查找。(二分查找底层依赖数组这种数据结构,而数组需要连续的内存空间,如果数据量太大,太耗内存。)
    6、二分查找的时间复杂度为O(logn)


    一工人要维修一条10km长的电话线,如何迅速查出故障所在。如果沿着线路一小段一小段查找,困难很多.每查一个点要爬一次电线杆子,10km长,大约有200多根电线杆子。因此就可使用二分法:设电线两端分别为A、B,他首先从中点C查,用随身带的话机向两端测试时,发现AC段正常,断定故障在BC段,再到BC中点D,发现BD正常,可见故障在CD段,再到CD中点E来看,这样每查一次,就可以把待查线路长度缩减为一半,故经过7次查找,就可以将故障发生的范围缩小到50—100m左右,即在一两根电线杆附近。这样就省了很多精力了。


    例 2现有 12 个小球,从外观上看完全相同,除了一个小球重量不合标准
    外其余的小球重量均相同,用一架天平限称三次把这个 ;坏球 ;找出来
    并说明此球是偏轻还是偏重,如何称?

    第一次:6 6 

    第二次:3 3

    第三次:1 1

  • 相关阅读:
    简单版的采用前后端分离模式实现SpingBoot新增&查询功能
    Vue date与el的两种写法
    Web开发小妙招:巧用ThreadLocal规避层层传值
    Zookeeper系列——2Zookeeper应用及常用命令
    精品基于Uniapp+SSM实现的Android的校园新闻管理系统实现的App
    面试 Python 基础八股文十问十答第七期
    pip更改为国内源
    vim 多行注释
    PRML 回归的线性模型
    痞子衡嵌入式:i.MXRT中FlexSPI外设不常用的读选通采样时钟源 - loopbackFromSckPad
  • 原文地址:https://blog.csdn.net/gaojingsong/article/details/127791080