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