- 論壇徽章:
- 14
|
本帖最后由 bruceteen 于 2011-09-28 12:19 編輯
我考慮過用二分,但并不是所有區(qū)間的地址范圍都是連在一起的,可能是有空隙的,
某些情況下,所要查詢的地址如果是落在空隙中的話,簡單的二分法要很久才能查到。
二分不是不好,但至少要對這個case做一點優(yōu)化設(shè)計吧?
xyfree 發(fā)表于 2011-09-28 08:45 ![]()
我聽不懂,為什么“所要查詢的地址如果是落在空隙中的話,簡單的二分法要很久才能查到”?
我舉個例子吧,你的區(qū)間是[100,200), [300,400), [500,1000)
排序一下得到集合 { 100, 200, 300, 400, 500, 1000 }
假設(shè)你搜索 350,得到一個下標(biāo)索引2,因為2為偶數(shù),所以結(jié)論是:350在第(2/2=1)個區(qū)間,這個區(qū)間的范圍是p[2]到p[2+1]
假設(shè)你搜索 450,得到一個下標(biāo)索引3,因為3為奇數(shù),所以結(jié)論是:450落在第(3/2=1)個區(qū)間到第((3+1)/2=2)個區(qū)間之間 |
|