二分查找

public class Find {
public static void main(String[] args) {
//演示二分查找
int []arr={1,2,3,4,5,6,8};
BinarySearch bs=new BinarySearch();
bs.find(0, arr.length-1, 4, arr);
}

}
//二分查找(有序)
class BinarySearch
{
public void find(int leftIndex,int rightIndex,int val,int arr[])
{
//首先找到中间的数
int midIndex=(rightIndex+leftIndex)/2;
int midVal=arr[midIndex];
//如果要找的数比midVal大
if(midVal<val)
//在arr 的右边找
find(midIndex+1,rightIndex,val,arr);
else if(midVal>val)
//在arr左边数中找
find(leftIndex,midIndex-1,val,arr);
else if(midVal==val)
System.out.println("找到了,下标"+midIndex);

}
}

调试结果:找到了,下标3

 

 

你可能感兴趣的:(二分查找)