java 二分查找
来源:互联网 发布:英语选择题答案软件 编辑:程序博客网 时间:2024/05/22 01:50
二分查找又称折半查找,是一种较高效率的查找方法。
优点:比较次数少,查找速度快,平均性能好,占用系统内存较少。
缺点:要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。
算法要求:
1.必须采用顺序存储结构。
2.必须按关键字大小有序排列。
算法思想:
将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止。如果x小于a[n/2],则我们只要在数组a的左半部继续搜索x(这里假设数组元素呈升序排列)。如果x大于a[n/2],则我们只要在数组a的右 半部继续搜索x
算法实现:
方式一:while循环
public int binarySearch(Integer[] srcArray, int element) { //定义初始最大、最小索引 int start = 0; int end = srcArray.length - 1; //确保不会越界重复查找 while (start <= end && start <= srcArray.length - 1 && end <= srcArray.length - 1) { //获取中间索引,若写为:middle=(start+end)/2,则会出现在当start+end的结果大于表达式结果类型所能表示的最大值时, // 这样产生溢出后再 / 2 是不会产生正确结果的, int middle = start + (end - start) / 2; if (element == srcArray[middle]) { return middle; //判断下限 } else if (element < srcArray[middle]) { end = middle - 1; //判断上限 } else { start = middle + 1; } } //若没有查找到则返回-1 return -1; }
方式二:递归
public int binarySearch(Integer[] srcArray, int start, int end, int element) { //获取中间索引,若写为:middle=(start+end)/2,则会出现在当start+end的结果大于表达式结果类型所能表示的最大值时, // 这样产生溢出后再 / 2 是不会产生正确结果的, int middle = start + (end - start) / 2; if (element == srcArray[middle]) { return middle; } else if (start > end) { return -1; //判断下限 } else if (element < srcArray[middle]) { end = middle - 1; return binarySearch(srcArray, start, end, element); //判断上限 } else { start = middle + 1; return binarySearch(srcArray, start, end, element); } }
阅读全文
0 0
- 二分查找(折半查找) java
- Java二分查找、折半查找
- java二分查找
- java 二分查找法
- java二分查找
- Java实现 二分查找
- java二分查找
- java:二分查找法
- java 二分查找算法
- java二分查找
- java 二分查找算法
- java二分查找
- Java二分查找算法
- Java二分查找
- Java实现二分查找
- java二分查找法
- java实现二分查找
- 二分查找 java代码
- 登陆示例(利用jsp,servlet)不连接数据库
- 高级软件工程实验报告七
- 定义一个圆形的类
- Informatica基础系列(四)——联结组件、路由组件
- 第2章 Opencv图像处理初阶(core组件)
- java 二分查找
- B
- 表格 Css
- 数据结构之顺序表
- 区块链记账原理
- - Divisiblity of Differences CodeForces
- hessian入门案例(一)
- 集成学习
- 报数