码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-11-09 17:20:50      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:查询   下标   bre   数组   min   bsp   length   成功   排除   

//折半查找(二分法)
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;
        }
    }
}

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

标签:查询   下标   bre   数组   min   bsp   length   成功   排除   

原文地址:https://www.cnblogs.com/private-mingmie/p/11826660.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!