| Hide text Hide pseudo-code | |
|
Find the given key from the table by using interpolation search. Some additional problems.
int interpolationSearch(int[] table,int x) {
int low = 0;
int high = table.length-1;
int mid;
while(table[low] < x && table[high] >= x) {
// Division truncates
mid = low + ((x-table[low]) * (high-low)) / (table[high] - table[low]);
if(table[mid] < x) low = mid + 1;
else if(table[mid] > x) high = mid - 1;
else return mid;
}
if (table[low] == x) return low;
else return -1; // Not found
}
|