数组(七)--折半查找
来源:互联网 发布:学科竞赛本科状态数据 编辑:程序博客网 时间:2024/06/05 05:06
搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。
算法步骤描述:
① 首先确定整个查找区间的中间位置 mid = ( left + right )/2 。② 用待查关键字值与中间位置的关键字值进行比较; 若相等,则查找成功 若大于,则在后(右)半个区域继续进行折半查找 若小于,则在前(左)半个区域继续进行折半查找。③ 对确定的缩小区域再按折半公式,重复上述步骤。最后,得到结果:要么查找成功, 要么查找失败。折半查找的存储结构采用一维数组存放。public class Demo11 {public static void main(String[] args) {int[] arr={2,3,5,6,8,9,12};int key=halfSearch_2(arr,8);System.out.println(key);}//折半查找public static int halfSearch(int[] arr,int key){int min,max,mid;min=0;max=arr.length-1;mid=(min+max)/2;while(arr[mid]!=key){if(key>arr[mid])min=mid+1;else if(key<arr[mid])max=mid-1;if(min>max)return -1;//表示要查找的值不存在mid=(min+max)/2;}return mid;}//折半查找方法二public static int halfSearch_2(int[] arr,int key){int min,max,mid;min=0;max=arr.length-1;while(min<=max){mid=(min+max)>>1;//右移一位,相当于除以2if(key>arr[mid])min=mid+1;else if(key<arr[mid])max=mid-1;else return mid;}return -1;}}
结果为:4
阅读全文
0 0
- 数组(七)--折半查找
- java数组(折半查找)
- 数组元素的查找(折半查找)
- [源码]排序数组二分法(折半)查找
- 数组的折半查找
- 数组--折半查找
- 数组折半查找
- java数组之二分查找法(折半查找)
- 有序数组的折半查找
- 字符串数组的折半查找
- [JAVA]数组的折半查找
- 无序数组的“折半查找”
- 数组的折半查找操作
- 先对数组排序,在进行折半查找(C++)
- JAVA数组排序——二分(折半)查找
- 数组中普通查找和折半查找
- 二分法(折半查找)
- 二分法(折半查找)
- Activity A 跳转到 Activity B,生命周期的执行过程
- MyBatis中如何通过继承SqlSessionDaoSupport来编写DAO
- 深入解析Java中的深拷贝和浅拷贝
- jvm的基本结构
- Spring Boot+JPA+Mysql完成数据库整合操作
- 数组(七)--折半查找
- 二叉树的镜像
- SpringAOP实例之简单实现(Annotation形式)
- 并发编程修炼八:Java ConcurrentModificationException异常原因和解决方法
- 微信开发-公众号支付(1)-获取openid
- Jenkins + svn 构建项目
- 设计模式学习总结:策略模式(Strategy Pattern)
- app与网页交互
- mongodb高可用集群搭建(分片+读写分离+负载均衡)