古詩詞大全網 - 成語查詢 - C語言 二分法查找次數公式怎麽推導?

C語言 二分法查找次數公式怎麽推導?

對具有n個元素的有序數組進行二分法查找,要分析的比較次數,可以使用畫二叉判定樹的方法來分析。該二叉判定樹的高度為[log2(n)]+1層,此即為二分查找的最多比較次數,比如:n=1000,則最多比較[log2(1000)]+1=9+1=10次。

如果要計算平均的比較次數,則需要對二叉判定樹中的每個節點進行分析,處於第壹層的比較1次,第二層的比較2次,第三層比較3次,依次類推……把各個節點的比較次數累加,再處於節點數(元素個數)即為平均比較次數,這裏假設查找是在等概率的情況下進行的。

舉個例子:有9個元素的有序數組,對每個元素按1,2,3...8,9進行編號,則其二叉判定樹如下:

圖中可以看出,如果要找的元素處在第5個位置,則只要1次比較即可找到,若找第9個元素,則需要4次比較,算法分別比較了第5,7,8,9等4個元素。所以,平均的比較次數大概如下:

這樣分析,能看懂嗎?希望能幫到妳!