【算法-查找之二】二分查找

来源:互联网 发布:p2p网贷网站源码 编辑:程序博客网 时间:2024/06/05 21:09

算法-查找之二二分查找


          顺序查找【算法-查找之一】顺序查找是最简单的查找策略,易于分析,适用于小规模数据。如果数据规模很大时,顺序查找的表现就不尽人意,此时需要寻找一个更有效率的算法-二分查找
         二分查找,也称折半查找,查找性能优异,但查找数据必须是有序序列。
          1.顺序查找    
            核心先确定待查目标所在的范围,然后逐步缩小范围直到查找成功或查找失败
           关键字key与表中某一元素Array[i]比较,有3中结果:
            1.key==Array[i],查找成功。
            2.key > Array[i],待查元素可能的范围是Array[i]之前。
            3.key < Array[i],待查元素可能的范围是Array[i]之后
            二分查找基于上述的原理:每次将可能范围中间位置的数与key比较,相等则放回查找成功,不等则缩小范围。如下图
           关键字与当前范围中间位置元素比较:
       
           关键字>中间位置元素,则缩小后的范围:中间元素右边
  
            通过不断地缩小查找范围,知道查找成功,或者返回查找失败。

 示例 程序如下:       
          2.时间复杂度
          二分查找的时间复杂度为 log2(N)。
          3.二分查找的评估
          二分查找的效率较高,但要求序列有序。序列排序本身就是一种高代价操作,往有序序列内插入和删除数据都比较困难。因此,二分查找特别适合于很少改动,但需要经常查找的表
4 0