插值查詢詳解

2021-07-03 00:22:29 字數 970 閱讀 8135

//插值查詢

/*插值查詢在實際使用時,一般要滿足兩個假設條件:

(1)每一次對資料的訪問與通常的指令相比,費用都是相當昂貴的。例如,待查詢的表一定是在磁碟而非記憶體中,因而每一次比較都

要進行磁碟訪問。

(2)資料不僅是已被排好序的,而且呈現均勻分布特徵。

這種插值查詢對錶長較大的順序表,其平均效能比折半查詢好。

*/#include

#include

using namespace std;

int insertvaluesearch(int values, int num, int element)

else

if(values[mid] < element)

else

} //未能查詢到該元素

return -1;

} int main() ;

int len = sizeof(values)/sizeof(int);

int result = insertvaluesearch(values,len,13);

if(result != -1)

{ cout

{ cout<

/插值公式:

其中st.elem[l]和st.elem[h]分別為有序表中具有最小關鍵字和最大關鍵字的記錄。

//插值演算法原理

當n1和n2無限接近時,近似直邊三角形abc、ade為相似三角形,則有:bc/de=ab/ad

在圖中即有:f-f1/f2-f1=n-n1/n2-n1

插值查詢 插值搜尋

這是一種和二分比較相似的查詢的演算法,不過不同的是,對於分布比較均勻的較大的陣列,插值查詢有時能夠一次就搜尋到位.為什麼能夠這麼快呢 看網上沒有什麼關於這種演算法的描述,我就來描述一下吧.首先要知道一點,這種搜尋方式只能夠針對順序表進行,再乙個要理解順序表中的乙個特點,在順序表中查詢是否存在乙個值,...

查詢 插值查詢

插值查詢 插值查詢法的演算法思想 插值查詢法其實就是折半查詢法的加強優化版,它對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...