課堂實踐ASL博客
實踐博客
二分法查找元素
- 1.首先定義三個位置min,mid,max
- 2.每次從全部元素所處位置的中間開始查找(全部元素必須以由小及大順序排列完畢)
- 3.當中間元素大於所查找元素時,從中間元素(mid)左半區進行查找,此時max元素由最大值變爲mid左側緊鄰的那個元素,min元素不變。
- 4.當中間元素小於所查找元素時,從中間元素(mid)右半區進行查找,此時max位置不變,min元素由最小元素變爲mid元素的緊鄰的右側元素,max元素不變
- 5.當所查元素與mid元素相等時,查找結束。
- 6.當未查找到時,重複三、4步驟,直至查找到所需元素。
ASL分析
- ASL,Average Search Length,是查找算法的查找成功時的平均查找長度的縮寫,是爲肯定記錄在查找表中的位置,需和給定值進行比較的關鍵字個數的指望值。
- 二分法的ASL
05 |
13 |
19 |
21 |
37 |
56 |
64 |
75 |
80 |
88 |
92 |
3 |
4 |
2 |
3 |
4 |
1 |
3 |
4 |
2 |
3 |
4 |
- 第一行爲索引,第二行爲元素,第三行爲查找到該元素所須要的次數。
- 因此該元素集合的ASL=(1+2 * 2 + 3 * 4 + 4 * 4)/11=3
時間算法複雜度分析
- 二分法每次能夠排除一半不符合要求的元素
- 對於n個元素
- 1.第一次剩下n/2
- 2.第二次剩下n/4
- 3.n次剩下n/(2^m)
- 因此,時間複雜度爲log₂(n)
- 補充,對於第一個,第二個數即05,13元素,他們的搜尋次數爲3和4.這取決於其具體的代碼實現,不一樣的比較順序能夠帶來不一樣的搜尋次數,例如,先從遠離最後一次中間元素開始,那麼05爲3次,從靠近最後一次中間元素開始,05就會變爲4次。
歡迎關注本站公眾號,獲取更多信息