Java数组之二分查找
2024-10-20 20:44:30
简单的二分查找
package com.kangkang.array;
public class demo03 {
public static void main(String[] args) {
// 简单的二分查找,必须时有序的,无序的不能使用二分查找
int[] arr = {10,20,30,40,50,60,70,80,90};
int index = getIndex(arr,10);
System.out.println("该元素的下标为"+index);
}
private static int getIndex(int[] arr, int i) {
//定义一个最小值
int min = 0;
//定义一个最大值
int max = arr.length-1;
//定义一个中间值
int center = (max + min ) / 2;
//定义一个循环,当最小值大于最大值肯定时找到了就退出循环
while ( min <= max) {
// 当找的那个数等于中间数时退出循环
if (i == arr[center]) {
return center;
//当 i < 中间数时 最大值为中间值-1
} else if (i < arr[center]) {
max = center - 1;
//当 i > 中间数时 最大值为中间值+1
} else if (i > arr[center]) {
min = center + 1;
}
// 重新计算中间索引
center = (min + max) / 2;
}
// 不存在就返回-1,程序结束
return -1;
}
}
最新文章
- oracle的IMU和ora-01555
- Extract Fasta Sequences Sub Sets by position
- Hibernate.lock()方法中各种锁的区别
- NFC 与 Windows Phone 的那点事儿
- SharePoint表单和工作流 - Nintex篇(三)
- SAP交货单过账自动生产采购订单、采购订单自动收货入库
- compile php 5.4
- ReSharper warning: Virtual member call in a constructor
- plsql找外键约束关联的表的方法
- June 29th. 2018, Week 26th. Friday
- 接口隔离原则(ISP)
- 使用CSS选择器定位页面元素
- jsp使用servlet实现文件下载
- VMware中四种网络连接模式的区别
- js中编写velocity逻辑
- 配置Oracle访问SQL地理数据库
- 快速排序|2018年蓝桥杯B组题解析第五题-fishers
- 【原创】有关Silverlight中 ";Silverlight提示4004错误"; 的解决方案及思路。
- [USACO09MAR]Moon Mooing
- JavaScript 之 日常积累