查找算法----插值查找

在這裏插入圖片描述
在這裏插入圖片描述

package 查找算法;

public class InterpolationSrarch {
    public static void main(String[] args) {
        int arr[]={1,5,12,21,30,32,55,68,80,89,90,99};
        int key=30;
        int index=interpolationSrarch(arr,key,0,arr.length-1);
        System.out.println("index="+index);
    }

    private static int interpolationSrarch(int[] arr, int key, int low, int high) {
        if(low>high){
            return -1;
        }
        int mid=low+(int)(1.0*(key-arr[low])/(arr[high]-arr[low])*(high-low));
        
        if (mid<low||mid>high){
            return -1;
        }
        if(arr[mid]==key){
            return mid;
        }else if (arr[mid]>key){
            return interpolationSrarch(arr,key,low,mid-1);
        }else {
            return interpolationSrarch(arr,key,mid+1,high);
        }
    }
}

執行結果

index=4
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章