qq_41701572 2018-09-02 03:14 采纳率: 18.2%
浏览 4550
已结题

算法问题:考察二分查找的平均成功查找长度和平均失败查找长度的关系,请看图

图片说明图片说明图片说明图片说明其中有一个不懂的地方是为什么Ctn-1失败情况x对应的查找长度为d,然后Ctn中成功情况x对应的查找长度就为d-2?如果可以的话能结合比较树模型讲解一下过解题程(这里的解题过程不太明白)

  • 写回答

1条回答 默认 最新

  • devmiao 2018-09-02 03:29
    关注

    看数据结构书的时候碰上的内容,我自己将它化成关于级数的题,然后自己算的过程,基本就是等比级数和等差级数的混合内容。
    满二叉树来分析折半查找的平均长度

    h=层高 n=节点数
    []为计算过程的式

    先算总查找次数
    1*1+2*2+3*4+4*8...(h-1)*2^(h-2)+h*2^(h-1) ………………[1]

    [1]*2:

    1*2+2*4+3*8+4*16...(h-1)*2^(h-1)+h*2^h ……………………[2]

    [2]-[1]:
    [1]*2-[1]=[3]:
    [1]=[3]:

    -1*1-1*2-1*4-1*8-1*16...-2^(h-1)+h*2^h ……………………… [3]

    [4]+h*2^h=[3]…………………………………………………………………………[3.1]

    -1*1-1*2-1*4-1*8-1*16...-2^(h-1) ……………………………………… [4]

    [4]*2-[4]=[5]=[4]

    -2^h+1 …………………………………………………………………………………… [5]

    因为[5]=[4],所以把[5]代入[3.1]可以得到下面的结果
    [3]=[5]+h*2^h = -2^h+1+h*2^h=(h-1)*2^h+1

    由于 (n+1=2^h),所以有

    [3]=(n+1)log(n+1)-(n+1)+1
    =(n+1)log(n+1)-n

    最后,来求查找次数平均数
    [3] /n = ((n+1)log(n+1)-n)/n

    最终,平均查找长度约等于log(n+1)-1

    上面的所有对数log的底数皆为2.

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog