当数据量很大适宜采用该方法。采用二分法查找时,数据需是排好序的。 基本思想:假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,如果当前位置值等于x,则查找成功;若x小于当前位置值,则在数列的前半段 中查找;若x大于当前位置值则在数列的后半段中继续查找,直到找到为止。二分法查找在针对大量有序排列的情况下发挥出很优越的效率,非常简单
上代码:
package com.machine;
public class Search {
public static void main(String[] args)
{
// TODO Auto-generated method stub
int arr[]={0,1,2,3,4,5,6};
Binary_search bin_sea = new Binary_search();
bin_sea.search(arr, 0, arr.length-1, 0);
}
}
class Binary_search
{
public void search(int arr[],int leftIndex,int rightIndex,int val)
{
//首先找到中间值
int midIndex=(rightIndex + leftIndex) / 2 ;
int midVal=arr[midIndex];
if(leftIndex<=rightIndex)
{
//如果要找的值比Val大
if(midVal>val )//在arr左边找
{
search(arr,leftIndex,midIndex-1,val);
}
else if(midVal<val )
{
search(arr,midIndex+1,rightIndex,val);
}
else if(midVal==val)
{
System.out.println("下标值为:" +midIndex);
}
}
}
}