欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

二分法查找

程序员文章站 2022-03-14 20:42:39
...
/**
 * 
* @ClassName: 二分法查找
* @Description: (查找的二分法)
* @author Administrator
* @date 2018年6月11日 下午2:45:56
*
 */
public class 二分法查找 {
public static void main(String[] args) {
	//定义一个有序数组
	int[] array = {1,2,3,4,5,6,7,8,9,10};
	  //打印二分法的返回值
    System.out.println("下标的位置为:"+searchRecursive(array,0,array.length-1,9));
}
public static int searchRecursive(int[] array,int start,int end,int findValue){

    if(array==null){
        return -1;
    }
    if(start<=end){
        //中间位置
        int middle = (start + end)/2;
        //中值
        int middleValue = array[middle];

        if(findValue == middleValue){
            //与中值相等就直接返回
            return middle;
        }else if(findValue < middleValue){
            //目标值小于中值,在中值前面找(这里调用了二分法的方法)
            return searchRecursive(array,start,middle - 1,findValue);
        }else {
            //目标值大于中值,在中值后面找(这里调用了二分法的方法)
            return searchRecursive(array,middle + 1,end,findValue);
        }

    }else{
        //返回-1,查找失败
        return -1;
    }
}

这里要注意数组要是有序的

相关标签: suanfa