插值查詢的問題

2021-10-08 11:23:57 字數 714 閱讀 3631

對於插值查詢的效率很高,但是我發現乙個問題,就是在不連續的情況下,找 arrarr之間的數時應該是返回-1,但是出現了堆疊溢位異常

以下是**

public

static

void

main

(string[

] args)

;int i =

insertvalue

(arr,

0, arr.length -1,

50); system.out.

println

(i);

}public

static

intinsertvalue

(int

arr,

int left,

int right,

int value)

int mid = left +

(right - left)

*(value - arr[left])/

(arr[right]

- arr[left]);

int midvalue = arr[mid];if

(value > midvalue)

else

if(value < midvalue)

else

}

他在找50的時候,mid直接是1,而後直接進入了死遞迴

插值查詢 插值搜尋

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

查詢 插值查詢

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