二分查找&插值查找

复制代码
/**
 * 二分查找
 */
public class BinarySearch{

    /**
     * 搜索
     * @param key 关键字
     * @param arr 数据源
     * @return int
     */
    public static int search(int key, int[] arr) {
        int start = 1;
        int end = arr.length;
        //关键词越界
        if (arr[start] < key || arr[end-1] < key)
            return -1;
        int mid;
        while(start <= end) {
            mid = (start + end) / 2;
            if (key < arr[mid]) {
                end = mid - 1;
            } else if (key > arr[mid]) {
                start = mid + 1;
            } else {
                return mid;
            }
        }
        return -1;
    }

    public static void main(String[] args) {
            int[] arr = {1, 2, 3, 4, 5, 6, 7, 9, 200};
            int key = 201;
            int result = search(key, arr);
            System.out.println("search key "+key+" in offset "+result);
    }
}
复制代码
/**
 * 插值查找
 */
public class InsertValue {

    /**
     * 搜索
     * @param key 参数
     * @param arr 数据源
     * @return int
     */
    public static int search(int key, int[] arr) {
        int start = 1;
        int end = arr.length-1;
        int mid = -1;
        if (key < arr[0] || key > arr[end-1])
            return mid;

        while(start <= end) {
            mid = start + (end - start) * (key - arr[start]) / (arr[end] - arr[start]);
            if (key > arr[mid]) {
                start = mid + 1;
            } else if (key < arr[mid]) {
                end = mid - 1;
            } else {
                break;
            }
        }
        return mid;
    }

    public static void main(String[] args) {
        int key = 14;
        int[] arr = {13,14,15,55,66,89};
        int result = search(key, arr);
        System.out.println("search key "+key+" in offset "+ result);
    }
}
复制代码

 

 
复制代码

 

posted @   TongXiaLi  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示