假设在有序线性表A[1..20]上进行二分查找 平均查找长度为?

为什么答案给的是3.7呢?不是应该是log2(n+1)=log221么?请问3.7是怎么算出来的,求详细过程!!... 为什么答案给的是3.7呢?不是应该是log2 (n+1)=log2 21么?
请问3.7是怎么算出来的,求详细过程!!
展开
 我来答
百度网友f9fe670
2015-04-27 · TA获得超过5523个赞
知道小有建树答主
回答量:642
采纳率:100%
帮助的人:231万
展开全部
比较次数,为了直观一点,如下,第一排为各个数,接下来的5排为查找对应上面的数的查找比较次数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1
2 2
3 3 3 3
4 4 4 4 4 4 4 4
5 5 5 5 5
总共比较次数为:1 +2*2 + 4*3 + 8*4+ 5*5 = 74
平均长度是 74 /20 =3.7

可以这样算,二分查找就是将数列不停的二分
一个数列中间只有1个数,比较1次
二分后变为2个数列
然后查找这2个数列的中间数,比较次数等于 2个数列 * 2次
继续二分变为4个数列,比较次数变为 4 * 3
继续比较次数为8*4
继续比较次数为16*5,然而,这里的数只有20个,这里16显然多了,20 - 8 - 4 -2 -1 = 5,是5*5

以后你可以按照公式1+2*2 + ...2^(n-1) * n 来算总的比较次数。

log2(n+1)是理想的平均情况,近似值。
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式