数组折半查找(二分法)方法

//折半查找(二分法)
public void arrayHalfQuery() {
    //定义一个数组,类型为int整型数据类型
    int[] num = {1,3,4,7,9,10,12,15,17,19,21,22,25,26,28,29,30};
    //定义一个要查找的key值
    int key = 18;
    //取出数组中最大值下标和最小值下标
    int min = 0;
    int max = num.length-1;
    //调用死循环
    while(true) {
        //定义一个对半查找的中间值下标
        int mid = (min+max)/2;
        //当key的值与中间值下标的值相等,则查找成功,并且跳出循环
        if(key == num[mid]) {
            System.out.println("你要查询值的下标:"+mid);
            break;
            //当key的值大于num[mid],则排除左边,min往中间mid+1移动
        }else if(key > num[mid]) {
            min = mid +1;
            //当key的值小于num[mid],则排除右边,max往中间mid-1移动
        }else if(key < num[mid]) {
            max = mid -1;
        }
        //当max小于min,则说明已经查找完整个数组也没有找到,则结束死循环
        //因为key只有三种情况,所以要单独使用if分支语句,不能使用else if
        if(max<min) {
            System.out.println("你要查找的数值在本数组中不存在!");
            break;
        }
    }
}

猜你喜欢

转载自www.cnblogs.com/private-mingmie/p/11826660.html