插值查詢是在折半查詢的基礎上進行優化,不過也只是在部分情況下能達到最好情況。
適用條件:
關鍵公式
mi 代表 查詢點mid
lo 代表 low
hi 代表 high
e 代表 查詢的值
// 求出mi
int mi = lo +
(hi - lo)
*(e - arr[lo])/
(arr[hi]
- arr[lo]);
if(e < arr[mi]
)else
if(arr[mi]
< e)
else
}注:
對於資料量較大,關鍵字分布比較均勻的查詢表來說,採用插值查詢, 速度較快.
插值查詢 插值搜尋
這是一種和二分比較相似的查詢的演算法,不過不同的是,對於分布比較均勻的較大的陣列,插值查詢有時能夠一次就搜尋到位.為什麼能夠這麼快呢 看網上沒有什麼關於這種演算法的描述,我就來描述一下吧.首先要知道一點,這種搜尋方式只能夠針對順序表進行,再乙個要理解順序表中的乙個特點,在順序表中查詢是否存在乙個值,...
查詢 插值查詢
插值查詢 插值查詢法的演算法思想 插值查詢法其實就是折半查詢法的加強優化版,它對mid的演算法進行了重新的規定,使此查詢法的效率更高。mid low high low key a low a high a low 插值查詢法的演算法可描述如下 int search keytype key,int n...
查詢 插值查詢
問題描述 通過插值查詢,查詢乙個數在給定陣列中是否存在,若存在找到位置索引,不存在返回 1 給定陣列中的數值都不相等 演算法實現 privat int interpolationsearch int arr,int lo,int hi,int key int mid lo hi lo key arr...