二分查找&插值查找
/** * 二分查找 */ 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); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!