查詢 插值查詢

2021-09-10 07:13:46 字數 1096 閱讀 9379

插值查詢

插值查詢法的演算法思想:插值查詢法其實就是折半查詢法的加強優化版,它對mid的演算法進行了重新的規定,使此查詢法的效率更高。

mid=low+(high-low)*(key-a[low])/(a[high]-a[low])

插值查詢法的演算法可描述如下:

int search(keytype key,int n,keytype k)

return -1; //查詢失敗,返回-1

}

其餘具體的演算法與折半查詢法相同,詳見折半查詢:

【例項】

有乙個陣列a[10],裡面存放了10個整數,順序遞增。任意輸入乙個數字n,找到n在陣列中的位置。如果n不屬於該陣列a,顯示錯誤提示。

a[10]=

【分析】

#includeint search(int a,int n,int key)

}return -1; //查詢失敗,返回-1

}main()

,i,n,addr;

printf("a[10]:");

for(i=0;i<10;i++)

printf("%d ",a[i]); //顯示陣列a的內容

printf("\n輸入要查詢元素:");

scanf("%d",&n); //輸入待查詢元素

addr=search(a,10,n); //折半查詢返回該元素在陣列中的下標

if(addr!=-1) //查詢成功

printf("%d是陣列中的第%d個元素",n,addr+1);

else //查詢失敗

printf("a陣列中無%d",n);

return 0;

}

執行結果如圖所示:

注意:陣列的下標從0開始,故要在原返回值上+1,才為元素的位置。

查詢 插值查詢

問題描述 通過插值查詢,查詢乙個數在給定陣列中是否存在,若存在找到位置索引,不存在返回 1 給定陣列中的數值都不相等 演算法實現 privat int interpolationsearch int arr,int lo,int hi,int key int mid lo hi lo key arr...

插值查詢 插值搜尋

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

有序表查詢 插值查詢

插值查詢和折半查詢的思想是一樣的,其 機構也基本和折半查詢相同 折半查詢 public int binary search int a,int n,int key else if key a mid else return mid return 0 但是我們可能會碰到這種情況,要在取值範圍0 100...