二分查找法
二分查找法,顾名思义,是一种一分为二的查找算法,适用于已排序的数组(大数据量),快速地找到所查找数的位置。
源代码:
- /**
- * @param i 数组
- * @param key 要查找的Key
- * @return
- */
- static int binarySearch(int[] i, int key){
- Arrays.sort(i);
- int low = 0;
- int high = i.length - 1;
- //int mid = (low + high)/2;
- while(low <= high){ // 计算条件,数组低下标和高下标一直在计算中变化
- int mid = (low + high)>>1; // 使用>>比除法计算效率高
- if(key > i[mid]){
- low = mid + 1;
- } else if(key < i[mid]) {
- high = mid - 1;
- } else {
- return mid;
- }
- }
- return -1;
- }
原理:
在数组中搜索给定Key时,先确定是有序数组,然后定义数组的最高下标和最低下标high、low,再求出数组的中间下标mid=(low+high)>>1。然后判断,当low<=high成立时,若数组[mid]值大于key时,将数组下标的底值提高为mid+1,反之将高值降低为mid-1,如此,每次将搜索的范围减小一半,大幅提高搜索效率。
附图:
posted on 2017-07-12 23:00 ilinux_one 阅读(414) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架