JAVA基础_二分查找

JAVA基础_二分查找

二分查找是用来干什么呢?如果我们需要在一个数组中找到某一个值,那么这里就可以用到二分查找,当数组内容越大效率越高,在这就涉及到二分查找的思路了。那么思路是啥?在一个顺序排列的数组中,我们找到中间值,让它和查找值去比较,这理由三种情况,大于(中间>查找),那么中间值的后边就可以排除在比较中了;同理,小于也可以排除一半;最特殊的就是相等了,直接输出索引就行了。以上就是思路,当然这只是一次的查找,后续利用循环直到找到查找数。(其实在java中已经有打包好了二分查找,可以直接调用)当我们自己去写二分查找时,需要定义三个数来辅助,第一个为最大值,第二个为最小值,第三个为中间值(最大加最小/2),再根据比较接过来更换值,直到出现查找值。

public static void main(String[] args){
	//定义一个要查找的值
	int a = 66;
	//定义一个数组
	int[]ssr={11,25,34,45,51,66,71,80,99};
	//调用java打包好的二分搜索方法完成查找
	int c =java.util.Arrays.binarySearch(ssr,a);
	System.out.println(c);
	//定义三个变量辅助if判断完成查找
	int max = ssr.length-1;
	int min = 0;
	int half = (max+min)/2;
	//对查找进行循环,直到查找的需要的值,当最大值和最小值相等时就是索引相等时,这时已经无法再去比较,所以作为终止条件
while (min<=max){
	//利用if   else判断查找值的位置并输出
	if (ssr[half]==a){
		System.out.println(half);
		break;
	}else if(ssr[half]<a){
		min = half+1;
		half = (min+max)/2;
	}else{  max=half-1;
		    half = (max+min)/2;
	}		
}
	System.out.println(half);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章