美文网首页
算法 | 对分查找

算法 | 对分查找

作者: IT熊老师 | 来源:发表于2018-06-15 09:52 被阅读0次

【算法思想】

首先将关键字与有序数组内处于中间位置的元素进行比较,如果中间位置上的元素内的数值与查找键不同,根据数组元素的有序性,就可确定应该在数组的前半部分还是后半部分继续进行查找;在新确定的范围内,继续按上述方法进行查找,直到获得最终结果。

使用前提:数据有序

【算法实例】

在包含8个数字的数组中用对分法查找一个符合要求的数“24”。

源数据:

第一步、排序:

第二步、在8个数组元素中找出中间数与“24”比较:

             中间数组元素下标=Int((最小数组元素下标+最大数组元素下标)/2)

             中间数组元素下标=Int((1+8)/2)=4

             d(4)=34

            ∵ 34>24

            ∴ 从d(4)开始向后的数据都可以舍弃,要找的“24”必定不在其中。

第三步、在剩下的d(1)到d(3) 间继续找“24”:

             中间数组元素下标=Int((1+3)/2)=2

             d(2)=12

             ∵ 12<24

             ∴ 从d(2)开始向前的数据都可以舍弃,要找的“24”必定不在其中。

第四步、在剩下的d(3)到d(3) 间继续找“24”:

            中间数组元素下标=Int((3+3)/2)=3

            d(3)=24

            ∵ 24=24

            ∴ 找到所需数据在数组中的位置为d(3)

VB程序:

i = 1 :j = n : s = 0

Do while i <= j

        m = ( i + j ) / 2

        If a( m ) = key Then s = m : Exit Do

        If a( m ) < key Then j = m - 1 

        If a( m ) > key Then i = m + 1

Loop  

相关文章

  • 算法 | 对分查找

    【算法思想】 首先将关键字与有序数组内处于中间位置的元素进行比较,如果中间位置上的元素内的数值与查找键不同,根据数...

  • 对分查找

    需求:给定一个整数X,求其在一个A0, A1,..., AN-1,后者已经预先排序并在内存中,求使得Ai = X的...

  • 对分查找、欧几里得、冥运算

    算法-对分查找(二分查找)C++实现验证x是否是居中的元素,如果是,则找到答案,如果小于居中元素,那么取左边已排序...

  • 算法

    一.算法基础--算法的特性 二.算法基础--算法的复杂度 三.顺序查找和二分查找 顺序查找 二分查找(前提是有序的...

  • 2018-03-30 算法 :查找简介

    世界上没有最好的算法,只有最合适的算法 查找算法:静态查找,动态查找 静态查找(一般使用线性表)的分类: 顺序查找...

  • 数据结构课程 第十二周 查找

    查找基本概念 线性表的查找 顺序查找(线性查找) 折半查找(二分或对分查找) 表中元素是有序的!(仅限于顺序存储结...

  • KMP算法文章合集

    字符串的查找:朴素查找算法和KMP算法 暴力匹配算法与KMP算法(串的匹配) 字符串查找算法BF和KMP 字符串匹...

  • P63-哈希表查找

    查找算法之哈希查找

  • 二分查找算法

    一、二分查找算法 二分查找算法又称为折半查找算法,它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序...

  • 15-二分查找(上):如何用最省内存的方式实现快速查找功能?

    一种针对有序数据集合的查找算法:二分查找(Binary Search)算法,也叫折半查找算法。 二分查找针对的是一...

网友评论

      本文标题:算法 | 对分查找

      本文链接:https://www.haomeiwen.com/subject/rsgajftx.html