java 二分法学习
2024-08-22 23:43:13
假设有一个数组 { 12, 23, 34, 45, 56, 67, 77, 89, 90 },现要求采用二分法找出指定的数值并将其在数组的索引返回,如果没有找到则返回 -1。代码如下:
package cn.sunzn.dichotomy; public class DichotomySearch {
public static void main(String[] args) {
int[] arr = new int[] { 12, 23, 34, 45, 56, 67, 77, 89, 90 };
System.out.println(search(arr, 12));
System.out.println(search(arr, 45));
System.out.println(search(arr, 67));
System.out.println(search(arr, 89));
System.out.println(search(arr, 99));
} public static int search(int[] arr, int key) {
int start = 0;
int end = arr.length - 1;
// 将开始和结束的下标进行比较,如果不一致则遍历下一个
while (start <= end) {
// 取到中间的下标
int middle = (start + end) / 2;
// 如果需要计算下标的 数组值比中间下标的数组值小,则在数组前一半中进行查找,即 将结束值-1
if (key < arr[middle]) {
end = middle - 1;
// 如果需要计算的值比中间值大,则在数组后半段查找,即将开始值+1
} else if (key > arr[middle]) {
start = middle + 1;
// 依次遍历后,根据开始和结束的值依次变化后查找到最终的需要计算下标值的数组下标
} else {
return middle;
}
}
return -1;
}
}
最新文章
- printf对齐
- cookie编码乱码问题与cookie禁用后session操作
- Java文件选择对话框(文件选择器JFileChooser)的使用:以一个文件加密器为例
- 关于 微软必应词典客户端(pc) 的案例分析
- GPS坐标换算为百度坐标
- phpmyadmin使用中碰到的一些问题
- SqlBulkCoy和普通数据库操作执行速度对比
- 【剑指offer】二叉树中和为某一值的路径
- 工作中用到的Jquery特效
- Scala学习文档-访问修饰符
- Oracle ORA-01555(快照过旧)
- CSS 注意事项
- 【解决方法】System.IO.FileNotFoundException
- cp复制文件到多个目录下及强制覆盖
- [SDOI2008]Sue的小球
- seg:NLP之正向最大匹配分词
- 因写太多 BUG!程序员遭公司颁奖羞辱,做的一个比一个绝​
- Handler使用中可能引发的内存泄漏
- linux centos6.8搭建 jdk 环境
- heightchart配置详解