插值查找
代码实现
/** * @author laoduan * @create 2020-05-10-18:30 */public class InsertValueSearch { public static void main(String[] args) { int [] arr = new int[100]; for(int i = 0;i<100;i++){ arr[i]= i+1; } } public static int insertValueSearch(int [] arr,int left,int right,int findVal){ //注意:findVal<arr[0] || findVal>arr[arr.length-1]是必须存在的 //否则mid可能越界 if(left>right || findVal<arr[0] || findVal>arr[arr.length-1]){ return -1; } int mid = left +(right-left) *(findVal-arr[left])/(arr[right]-arr[left]); int midVal =arr[mid]; if(findVal>midVal){ //说明应该向右递归 return insertValueSearch(arr,mid+1,right,findVal); }else if(findVal<midVal){ return insertValueSearch(arr,left,mid-1,findVal); }else { return mid; } }}