java二分法来求一个数组中一个值的key
2024-10-19 09:00:14
package TestArray; import java.util.Arrays; /**
* 二分法查找
*/ public class Test {
public static void main(String[] args) {
int[] arr = {30, 20, 50, 10, 80, 9, 7, 12, 100, 40, 8};
int searchWord = 20;
/**
* 二分法执行前,一定要排序
*/
Arrays.sort(arr); //二分法查找之前,一定要对数组元素排序
System.out.println(Arrays.toString(arr));
System.out.println(searchWord + "元素的索引:" + binarySearch(arr, searchWord));
} // 定义一个数组,然后传一个值进去
public static int binarySearch(int[] array, int value) {
int low = 0;
int high = array.length - 1;
while (low <= high) {
int middle = (low + high) / 2; // 获取中间索引
if (value == array[middle]) { // 如果这个值是这个数组的中间的话,则返回这个索引
return middle; // 返回查询到的索引位置
} // 如果值大于中间的值的话, 说明则要改起点,起点应该改成中间的key+1
if (value > array[middle]) {
low = middle + 1;
} if (value < array[middle]) {
high = middle - 1;
}
} //上面循环完毕,说明未找到,返回-1
return -1;
}
}
最新文章
- mybatis多表查询
- MessageReceiver
- pe创建激活administrator后消除问题,删除用户问题
- 教你在Excel里做GA的水平百分比图的详细步骤(图文教程)-成为excel大师(1)
- java系列: 对不起,JavaFX——Java 8目前还不能救你(zz)
- Servlet之Filter详细讲解
- UVA 10325 The Lottery( 容斥原理)
- 8添加一些样式:开始学习CSS
- robot API笔记5
- Xstream之常用方式与常用注解
- python 中 json的处理
- IntelliJ IDEA对开发者的三大诱惑
- Unity CommandInvokationFailure: Failed to re-package resources. 解决方案
- 位图(BitMap)
- java集合之ArrayList,TreeSet和HashMap分析
- Java内存模型概念简单介绍,想深入自行百度
- 详细记录sql运行时间(精确到毫秒)
- Oracle 入门
- form图片上传遇到错误
- Spring中使用两种Aware接口自定义获取bean
热门文章
- 漫谈C++:良好的编程习惯与编程要点(转载)
- bootstrap table 主子表 局部数据刷新(刷新子表)
- 异常:org.hibernate.id.IdentifierGenerationException
- 【转】 ios的手势操作之UIGestureRecognizer浅析
- 关于TOCTTOU攻击的简介
- <;知识整理>;2019清北学堂提高储备D3
- C# 利用HttpWebRequest进行HTTPS的post请求的示例
- URL 与URI 的区别
- jstl有什么优势(简单介绍)
- C# 打开文件或打开文件夹