二分查找(数组)

二分查找

1.定义两个变量,表示要查找的范围,默认min = 0,max = 最大索引
2.循环查找,但是min<=max
3.计算出mid的值
4.判断mid位置的元素是否为要检查的元素,如果是直接返回对应索引
5.若要查找的元素值在mid的左边,那么min值不变,max = mid -1,继续下次循环查找
6.若要查找的元素值在mid的右边,那么max值不变,min = mid +1,继续下次循环查找
7.当min>max时,表示要查找的元素不存在,返回 -1

public class MyBinarySearchDemo {
    public static void main(String[] args) {
        int[] arr = {1,2,3,4,5,6,7,8,9,10};
        int num = 3;
        int index = binarySearchForIndex(arr,num);
    }

    private static int binarySearchForIndex(int[] arr, int num) {
        //1.定义查找范围
        int min = 0;
        int max = arr.length-1;
        //2.循环查找  min<=max;
        while (min<=max){
            //3.计算中间位置 mid
            int mid =(min + max) >> 2;

            if (arr[mid]>num){//mid指向的元素 > num,表示要查找的元素在左边
                max = mid -1;
            }else if (arr[mid]<num){//mid指向的元素 < num,表示要查找的元素在右边
                min = mid +1;
            }else{
                return mid;//mid指向的元素 == num
            }


        }
        return -1;//如果min大于max就表示元素不存在。
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值