二分查找算法

二分查找算法

二分查找法要求查找序列为有序序列

/*
 * 要求:二分查找要求查找的必须是有序序列
 * 查找步骤:
 * 1、给出要查找的元素key,将第一个元素置为low,下标为0;最后一个元素置为high,下标为length-1
 * 2、mid=(low+high)/2	将key与序列中下标为mid的元素进行比较
 * 3、若key的值与下标为mid值相等,返回mid
 * 4、如果key的值大于下标为mid的值,则low=mid+1;若果key的值小于下标的值,则high=mid-1
 * 5、再将key与mid的值比较,重复3、4步骤,直至找出与key相等的元素的下标
 * 6、如果序列中不存在这样一个元素与key的值相等,则返回-1
 */
public class BinarySearch {

	public static void main(String[] args) {
		
		int[] arr={10,20,30,40,50,60,70,80,90};
		//如果arr不是一个有序序列,则调用sort方法进行排序
		//Arrays.sort(arr);
		
		System.out.println(myBinarySearch(arr,50));
	}
	
	public static int myBinarySearch(int[] arr,int key){
		int low=0,high=arr.length-1;
		
		while(low<=high){
			int mid=(low+high)/2;
			
			if(key==arr[mid]){
				return mid;
			}
			
			if(key>=arr[mid]){
				low=mid+1;
			}
			
			if(key<=arr[mid]){
				high=mid-1;
			}
		}
		
		return -1;
	}

}

你可能感兴趣的:(java)