码迷,mamicode.com
首页 > 其他好文 > 详细

二分法查找

时间:2015-11-03 00:28:48      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:

public class Demo {
	public static void main(String[] args) {
		System.out.println(search2(new int[]{1,4,5,9,11,23,25,33},7));
	}
	
	public static int search(int[] arr,int key){
		int start=0;
		int end=arr.length-1;
		while(start<=end){
			int middle=(start+end)/2;
			
			if(key<arr[middle]){
				end=middle-1;
			}else if(key>arr[middle]){
				start=middle+1;
			}else{
				return middle;
			}
		}
		return -1;
	}
	
	public static int search2(int[] arr,int key){
		int start=0;
		int end=arr.length-1;
		int middle=(start+end)/2;
		while(arr[middle]!=key){
			
			if(key<arr[middle]){
				end=middle-1;
			}else{
				start=middle+1;
			}
			if(start>=end){
				return -1;
			}
			middle=(start+end)/2;
		}
		return middle;
	}
}

  二分法查找的思想:

1,前提是一个已经排好序的数组等。

2,每次取区间中间一个元素与目标元素对比大小。如果比目标元素大,则start=middle+1;否则,end=middle-1;

3,判别循环的条件。

二分法查找

标签:

原文地址:http://www.cnblogs.com/mapc/p/4931684.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!