平均查找长度可以是小数吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了平均查找长度可以是小数吗相关的知识,希望对你有一定的参考价值。

参考技术A 查找长度(平均查找长度)和时间复杂度表示的是一个意思,相同的查找长度和时间复杂度处于一个量级。

而所谓的查找长度就是在查找运算中需要对比关键字的次数。

1. 平均查找长度(ASL)

在这里插入图片描述

pi 是查找到某个元素的概率(probability)
ci 是查找到这个元素时已经比较的次数,如,查找在 10 个数中查找第 5 个数,其比较的次数是多少(包括和第 5 个数比较的次数)
参考技术B 对于含有n个数据元素的查找表,查找成功的平均查找长度为:ASL=∑PiCi (i=1,2,3,…,n),可以简单以数学上的期望来这么理解。其中:Pi 为查找表中第i个数据元素的概率,Ci为找到第i个数据元素时已经比较过的次数。

二分查找的平均查找长度详解

来源: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.

以上是关于平均查找长度可以是小数吗的主要内容,如果未能解决你的问题,请参考以下文章

散列表的平均查找长度怎么计算?

数据结构 平均查找长度

关于哈希表查找不成功时的平均查找长度

散列表链地址法查找成功的平均查找长度怎么计算

二叉排序树平均查找长度

求开散列表的平均查找长度