二分法查找,基于java基础

public class Haofang {
    public static void main(String[] args) {
//        要查找的数
        int i=11;
        //准备好的有序数组
        int [] arr={1,1,2,2,3,3,4,4,5,6,7,8,9};
        
        int b=serach(arr, i);
        System.out.println( "下标是:"+b);
    }
/**
 * 自定义的二分法查找数组
 * @param arr
 * @param i
 * @return
 */
    private static int serach(int[] arr, int i) {
//        数组起始值
        int begin=0;
//        数组的结束值
        int end=arr.length-1;
//        二分法的中间值
        int middle=(begin+end)/2;
//        使用while循环,条件是角标
        while(begin<=end){
//            若是是数值大于中间值,让起始角标改值
            if(i>arr[middle]){
                begin=middle+1;
            }
            if(i==arr[middle]){
                return middle;
            }
//            若是是数值小于中间值,让结束角标改值
            if(i<arr[middle]){
                end=middle-1;
            }
//            给中间值赋值
            middle=(begin+end)/2;
        }
//        说明数组中没有此值
        return -1;
    }数组

}
 .net

相关文章
相关标签/搜索