二分查找過程可用二叉樹來描述
右子樹
注意
判定樹的形態只與表結點個數n相關
【例】具有
(
①圓結點即樹中的內部結點
②外部結點
③樹中某結點i與其左(右)孩子連接的左(右)分支上的標記
K
回
(
二分查找就是將給定值K與二分查找判定樹的根結點的關鍵字進行比較
中查找
【例】對於有
需進行二次比較;找第
由此可見
數
【例】待查表的關鍵字序列為
實際上方形結點中 (3)二分查找的平均查找長度 設內部結點的總數為n=2 h -1,則判定樹是深度為h=lg(n+1)的滿二叉樹(深度h不計外部結點)。樹中第k層上的結點個數為2 k- 1 ,查找它們所需的比較次數是k。因此在等概率假設下,二分查找成功時的平均查找長度為: ASL bn ≈lg(n+1)-1 二分查找在查找失敗時所需比較的關鍵字個數不超過判定樹的深度,在最壞情況下查找成功的比較次數也不超過判定樹的深度 。即為:
二分查找的最壞性能和平均性能相當接近。 6、二分查找的優點和缺點 雖然二分查找的效率高,但是要將表按關鍵字排序。而排序本身是一種很費時的運算。既使采用高效率的排序方法也要花費 O(nlgn)的時間。 二分查找只適用順序存儲結構。為保持表的有序性,在順序結構裡插入和刪除都必須移動大量的結點。因此,二分查找特別適 用於那種一經建立就很少改動、而又經常需要查找的線性表。 對那些查找少而又經常需要改動的線性表,可采用鏈表作存儲結構,進行順序查找。鏈表上無法實現二分查找。
From:http://tw.wingwit.com/Article/program/sjjg/201311/23857.html