Java 二分查找法

本文介绍了一种高效的搜索算法——二分查找法,并通过Java代码实现了该算法。文章详细解释了算法的工作原理,包括如何在有序数组中快速定位目标值及其索引位置。通过循环实现的方式,展示了算法的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**
 * 二分查找法
 *  适用于不经常变动而查找频繁的有序列表。
 * @author Administrator
 */
public class ErFenChaZhaoFa {
	
	public static void main(String[] args){
	
		 int[] arry = {1,4,5,7,8,12,15,17,22,36,35,45,50,112};
		 
		 int i = 35; //查找的值
		 
		 System.out.println( i + "的索引位置是:" + binarySearch(arry,i));
	}
	
	
	/**
	 * 循环实现二分查找法
	 *  限制:
	 * 	  必须是有序的序列
	 * 优点:
	 *   效率极高
	 * @param arry 要查找的数组
	 * @param i    查询的值
	 * @return -1则没查询到
	 */
	public static int binarySearch(int[] arry,int i){
		
		 int minIndex = 0;	          			//最小索引
		 int maxIndex = arry.length-1;			//最大索引
		 
		 while(minIndex <= maxIndex){ //循环条件,最小索引 小于或者等于 最大索引 (如果超出了就是没找到)
			
			int midIndex = (maxIndex+minIndex)/2; //计算中间索引(最小索引+最大索引)/2
			 
			 if(i == arry[midIndex]){ //当数组下标为中间索引的值 等于 i 的时候
				 
				return midIndex; //返回中间索引
			 }
			 else if( i < arry[midIndex]){ //当i的值  小于 数组下标为中间索引的值 的时候
				 
				 maxIndex = midIndex - 1; //(最小索引不变,最大索引 = 中间索引 - 1)
				 
			 }else{ //大于的时候
				 
				 minIndex = midIndex + 1; //(最大索引不变,最小索引 = 中间索引 + 1)
			 }
		 }
		 return -1;  //返回-1
	}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值