做这种题目的时候,应该画出二叉树。然后把叶子补足。叶子的高度就是查找失败的次数。然后求和除以叶子数目就是失败的平均查找长度。而非叶子节点就是成功的,高度就是成功的查找次数,然后除以非叶子节点的数目,就是成功的平均长度。对于11个节点,其构成的二叉树成功的查找长度是(1x1+2X2+3x4+4x4)/11=33/11失败的查找长度是(4x8+3x4)/(8+4)=44/12
二分查找也称折半查找,它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。
二分查找和分块查找顺序查找相当于遍历数组的所有元组,所以不需要排序二分查找需要排序,因为每次都是和中间值比较,如果大于选中间值后面的部分继续二分查找,如果小于中间值则选前面的部分继续执行分块查找中需要按照数值大小进行排序分块,虽然每个块中的大小可以不排序,但是块的取值区间是排序的。
二分查找法最坏情况
n个数, 比较中间的数,一次去掉一半,余下n/2个
n/2个数, 再比较中间的数,一次去掉一半,余下n/4个
n/4个数, 再比较中间的数,一次去掉一半,余下n/8个
n/8个数, 再比较中间的数,一次去掉一半,余下n/16个
顺序查找的基本思想:
就是遍历整个列表,逐个进行记录的关键字与给定值比较,若某个记录的关键字和给定值相等,则查找成功,找到所查的记录。如果直到最后一个记录,其关键字和给定值比较都不等时,则表中没有所查的记录,查找失败。
二分查找的基本思想是:
在有序表中,取中间记录作为比较对象,若给定值与中间记录的关键字相等,则查找成功;若给定值小于中间记录的关键字,则在中间记录的左半区继续查找;若给定值大于中间记录的关键字,则在中间记录的右半区继续查找。不断重复上述过程,直到找到为止。
要求如下: 1、待查找序列有序(关键字递增或者递减有序) 2、顺序存储(也就是数组连续存放,便于按下标或者序号随机访问)
pdl二分查找充分利用了序列元素的递增性质,采用分治策略搜索目标值(目标值存在于序列中),目标值的左边界和右边界(目标值不存在于序列中),其中左边界指的是最大的小于目标值的元素,右边界指的是最小的大于目标值的元素。
二分查找算法是一种快速的查找算法。当我们再一个数组中查找是否存在某个数时,通常是直接遍历这个数组直到找到这个数,时间复杂度为O(n)试想如果数据量很大,这里可以用一种简单快速的的查找算法--二分查找算法,也叫做折半查找算法。
不是同一个概念。折半是对半成百分之五十。二分是百分之二十。
根据二分法原理求方程f(x)=0的根得到的程序:一般地,对于函数f(x),如果存在实数c,当x=c时,若f(c)=0,那么把x=c叫做函数f(x)的零点,解方程即要求f(x)的所有零点. 假定f(x)在区间[a,b]上连续,先找到a、b使f(a),f(b)异号,说明在区间(a,b)内一定有零点,然后求f[ a+b 2 ],然后重复此步骤,利用此知识对选项进行判断得出, 故根据二分法原理求x 2 -2=0的解得到的程序框图可称为程序流程图. 故选A.
本网站文章仅供交流学习,不作为商用,版权归属原作者,部分文章推送时未能及时与原作者取得联系,若来源标注错误或侵犯到您的权益烦请告知,我们将立即删除