Also habe ich eine Implementierung eines Interpolations-Such-Algorithmus in Java hier bekam:Was ist falsch an meiner Implementierung eines Interpolationssuchalgorithmus?
public static boolean search(int key, int[] array) {
int low = 0, high = array.length - 1;
int middle = -1;
while(low <= high) {
middle = low + (((high - low)/(array[high] - array[low])) * (key - array[low]));
if(array[middle] == key)
return true;
else {
if(array[middle] < key)
low = middle + 1;
else
high = middle - 1;
}
}
return false;
}
Es ist für Werte des im Array-Bereich arbeitet, immer wahr Rückkehr, aber für Werte außerhalb des Bereichs meiner Arrays es nicht funktioniert (dh wenn ich eine Liste von Elementen von 1 bis 15 habe, funktionieren die Werte 0 und 16 nicht, da ich eine ArrayIndexOutOfBoundsException
bekomme).
Ich kann nicht scheinen, aus dem Debugger herauszufinden, wo ich falsch liege.
Danke!