二分查找的平均查找長度詳解【轉】


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM