博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二分查找的平均查找长度详解【转】
阅读量:5311 次
发布时间:2019-06-14

本文共 791 字,大约阅读时间需要 2 分钟。

来源:http://blog.csdn.net/turne/article/details/50488378

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

转载于:https://www.cnblogs.com/huashanqingzhu/p/5829590.html

你可能感兴趣的文章
Alpha 冲刺 (1/10)
查看>>
fat32转ntfs ,Win7系统提示对于目标文件系统文件过大解决教程
查看>>
500 Lines or Less
查看>>
adb devices unauthorized的解决办法
查看>>
ubuntu qq
查看>>
串口调试工具
查看>>
Awesome Adb——一份超全超详细的 ADB 用法大全
查看>>
shell cat 合并文件,合并数据库sql文件
查看>>
通过adb命令查看SN、CID码等信息
查看>>
linux 常用shell命令之wc
查看>>
win 解除鼠标右键关联
查看>>
Android 将drawable下的图片转换成bitmap、Drawable
查看>>
介绍Win7 win8 上Java环境的配置
查看>>
Android源码编译9步---Nexus 设备出厂镜像
查看>>
fatal: early EOF fatal: index-pack failed & Git, fatal: The remote end hung up unexpectedly
查看>>
移动、联通和电信,哪家的宽带好,看完你就知道该怎么选了!
查看>>
Linux设置环境变量的方法
查看>>
任务二:零基础HTML及CSS编码(一)
查看>>
树和图的一些算法
查看>>
oracle创建表空间和用户
查看>>