二分查找算法
二分查找法要求查找序列为有序序列
/*
* 要求:二分查找要求查找的必须是有序序列
* 查找步骤:
* 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;
}
}