二分查找

二分查找法:

Java代码思路,看详细注释。

public class er_fen_cha_zhao {
    public static void main(String[] args) {
        int a[] = {1, 2, 6, 8, 10, 12, 15};//1.排序好的数组。)
        int target = 15;  //2.要查找的目标值
      //3.二分法首先从数组中间开始找。设下标初始值为中间值,数组长度加1是因为数组长度有时候为奇数。
        int index = (a.length + 1) / 2; 
        int target_index = 0;//4.这是找到后的目标数组下标值。
        for (int i = 0; i < a.length; i++) {
            if (target == a[index]) { //5.首先判断查找的值是否和目标值相等。
                target_index =index;   //6.相等的话结束循环就行了
                break;
            } else if (target > a[index]) {//7.如果目标值比查找的值大,给下标重新赋值是
                index = (index + 1) / 2 + index;//8.之前的下标值加之前下表值得二分之一,这是二分后数组的后一半部分
            } else {
                index = index - (index + 1) / 2;//9.这是数组二分后的前一半部分
            }
        }
        System.out.println(target_index);//10.数组是从0开始的,结果要比数组本身位置少1。
    }
}

PS:自己写一遍代码就掌握了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值