1. 程式人生 > >二分查找的平均查找長度詳解【轉】

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

nbsp 得到 所有 二分查找 次數 log 來源 分析 blog

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

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