二分查找算法
1.前提是当前查找的数列必须是有序的
2.用查找的元素和查找数列中的中间元素进行比较,如果相等则表示成功。
3.如果查找的元素小于中间元素,则去中间元素的左边进行查找。重复执行步骤2的操作。
4.如果查找的元素大于中间元素,则去中间元素的右边进行查找。重复执行步骤2的操作。
5.如果查找的元素与所有的中间元素都比较完毕后都没有找到相等的元素,则查找失败。
public class TestBinaryFindDemo {
public static void main(String[] args){
int []array = {1,2,3,4,5};
int index = find(array,5,0,array.length-1);
System.out.println("当前查找的元素下标是"+index);
}
private static int find(int[] array, int data, int left, int right) {
if(left <= right){
int mid = (left + right)/2;
if(data == array[mid]){
return mid;
}else if(data<array[mid]){
return find(array, data, left, mid-1);
}else{
return find(array,data,mid+1,right);
}
}else{
return -1;
}
}
}