折半查找可以借助于一个二叉树来描述。
为了简化讨论,则把这棵树近似看成满二叉树,设二叉树的高度为h(h>1)
则,根据二叉树的性质,它有最大节点数n=2^h-1,
则h=log2(n+1) (2是底数)。那么二叉树的第j层节点数为:2^(j-1)
假定每个元素的查找概率相等,则,pi=1/n (pi为第i个节点的查找概率)
那么平均查找长度为 1/n*(1*2^0+2*2^1+3*2^2+……+j*2^(j-1))
则经过化简计算,得平均查找长度为:((n+1)/n ) *log2(n+1)-1 (其中对数中的2为底数:即log以2为底(n+1)的对数)
注 : 当n很大时 ,可近似为 log2(n+1)-1
搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找。
而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。
扩展资料:
假设有已经按照从小到大的顺序排列好的五个整数a0~a4,要查找的数是X,其基本思想是: 设查找数据的范围下限为l=0,上限为h=4,求中点m=(l+h)/2,用X与中点元素am比较,若X等于am,即找到,停止查找。
否则,若X大于am,替换下限l=m+1,到下半段继续查找;若X小于am,换上限h=m-1,到上半段继续查找;如此重复前面的过程直到找到或者l>h为止。如果l>h,说明没有此数,打印找不到信息,程序结束。
用待查关键字值与中间位置的关键字值进行比较;若相等,则查找成功若大于,则在后(右)半个区域继续进行折半查找若小于,则在前(左)半个区域继续进行折半查找。
对确定的缩小区域再按折半公式,重复上述步骤。最后,得到结果:要么查找成功, 要么查找失败。折半查找的存储结构采用一维数组存放。
参考资料来源:百度百科——折半查找法
如何计算折半查找的平均查找长度?
那么平均查找长度为 1\/n*(1*2^0+2*2^1+3*2^2+……+j*2^(j-1))则经过化简计算,得平均查找长度为:((n+1)\/n ) *log2(n+1)-1 (其中对数中的2为底数:即log以2为底(n+1)的对数)注 : 当n很大时 ,可近似为 log2(n+1)-1 搜索过程从数组的中间元素开始,如果中间元...
折半查找的平均查找长度是多少?
1、顺序查找的平均查找长度ASL=(n+1)\/2,2、在n趋于无穷大时,折半查找的ASL=((n+1)log2(n+1))\/n - 1,当n大于50时,ASL约等于log2(n+1)-1 3、设分块查找中将长为 n 的表分成均等的 b 个块,每块 s 个元素,则 b = (n \/ s)上取整,如果索引表中采用顺序查找,则ASL=(...
折半查找法的平均查找长度=?
平均查找长度=1\/12*(1*1+2*2+3*4+4*5)=37\/12。=3.1。
折半查找方法查找成功的平均查找长度
判定树 如上,查找成功平均长度=1\/8(1+2*2+3*4+1*5)=22\/8=11\/4
具有12个关键字的有序表,折半查找的平均长度是多少
平均查找长度=1\/12*(1*1+2*2+3*4+4*5)=37\/12。关于有序线性表是说线性表中的元素是按照升序或降序(允许相邻元素相同)的方式排列的。线性表是一种基本的计算机内的存储工具。顺序查找的基本思想是:从表中的第一个元素开始,将给定的值与表中逐个元素的关键字进行比较,直到两者相符,查到所...
【讨论】这道题怎么求折半查找的平均查找长度?
折半查找的算法你知道吗?根节点就是折半查找比较的第一个节点(1+29)\/2=15号元素左子树根节点就是1-14号元素中间的那个,右子树根节点16-29中间的那个,以此类推 查看原帖>>
有一个长度为12的有序表,按折半查找法对表进行查找,在表内各元素等概 ...
需要查找1次的排序为:第 6 需要查找2次的排序为:第 3,9 需要查找3次的排序为:第 1,4,7,10 需要查找4次的排序为:第 2,5,8,11,12 平均查找长度: (1*1+2*2+3*4+4*4)\/12 = 37\/12
折半查找的平均查找长度和它的判定树一样吗,为什么我这书上写了三个AS...
第一个只是笼统概念公式,最后两个是实际公式实现过程。现在来说最后两个ASL。将这棵树可看成完全二叉树,我将你图上的树重新画过,红色框表示为空结点。根结点为1,深度为4。查询成功:层次数x该层结点数之和除以总结点数。所以有(1x1+2x2+3x4+4x4)\/11即为平均查找长度。查询不成功:将平衡...
【数据结构】请教一道题,关于二分查找(折半查找)的平均搜索长度。
链表中的位置 :1 2 3 4 5 6 7 8 9 搜索成功的长度:3 2 3 4 1 3 2 3 4 所以平均长度是 (3+2+3...+3+4) \/ 9 答案是: C
「考前避坑」这几个ASL的坑不要再跳了!
考点1:顺序查找、二分查找、分块查找的ASL 在有序单链表中查找任一元素,平均查找长度为(n+1)\/2,无论表是否有序。具有12个关键字的有序表,折半查找成功平均查找长度为37\/12,失败为49\/13。通过折半查找判定树计算得出。分块查找成功平均查找长度计算公式为(s2+2s+n)\/2s,s为每块元素数,n...