二分查找算法例题 | 您所在的位置:网站首页 › 二分查找法查找不成功 › 二分查找算法例题 |
目录
一、问题描述二、实现思路三、解题代码四、运行结果
一、问题描述
对于给定11个数据元素的有序表:(2,3,10,15,20,25,28,29,30,35,40),若查找给定值为20的元素,将依次与表中哪些元素比较?若查找给定值为26的元素,将依次与哪些元素比较?假设查找表中每个元素的概率相同,求查找成功时的平均查找长度和查找不成功时的平均查找长度。 二、实现思路 对于给定11个数据元素的有序表:(2,3,10,15,20,25,28,29,30,35,40),采用二分查找,若查找给定值为20的元素,共比较4次。若查找给定值为26的元素,依次与25,30,28元素比较,共比较3次。假设查找表中每个元素的概率相同,根据查找判定树图1可得,在查找成功时会找到某个内部结点,则成功时的ASL成功=(11+22+43+44)/11=3,在查找不成功时,会找到图中某个外部结点,则不成功时的平均查找长度为ASL不成功=(43+84)/12=3.67。 折半查找的基本思路是设R[low…high]是当前的查找区间,首先确定该区间的中点位置mid=[(low+high)/2],然后将待查的k值与R[mid].key比较: (1)若k=R[mid].key,则查找成功并返回该元素的逻辑序号。 (2)若k R[mid].key.则关键字为k的元素必在mid的右子表R[mid+1…high]中。即新的查找区间是右子表R[mid+1…high],下一次查找是针对新的查找区间进行的。 |
CopyRight 2018-2019 实验室设备网 版权所有 |