import java.util.Arrays;
/**
* @author Drug
* @create 2020-04-29 14:59
*/
public class InsertValueSearch {
public static void main(String[] args) {
int[] arr = new int[100];
for(int i =0;i<arr.length;i++){
arr[i] = i+1;
}
System.out.println(Arrays.toString(arr));
int i = insertValueSearch(arr, 0, 99, 97);
System.out.println(i);
}
/**
* 插值查找
* @param arr 数组
* @param left 左界
* @param right 右界
* @param value 查找数值
*/
public static int insertValueSearch(int[] arr,int left,int right,int value){
System.out.println("这是插值查找~");
//找不到或者越界判定
if(left > right || arr[left] > value || arr[right] < value){
return -1;
}
//中间数选择
int mid = left + (right-left)*(value - arr[left])/(arr[right] - arr[left]);
int midValue = arr[mid];
//判断
//查找值小于中间值
if(value < midValue){
return insertValueSearch(arr,left, mid-1, value);
}else if(value > midValue){
//查找值大于中间值
return insertValueSearch(arr,mid+1,right,value);
}else{
//找到了
return mid;
}
}
}
java插值查找代码实现
最新推荐文章于 2022-08-19 21:37:47 发布