Java数组应用之------二分查找

原理
二分查找有一个重要的前提,那就是有序。原理可以看做一个猜数字的游戏,在给定的一个区间内,获取中间的数据 判断他和猜的那个数的大小关系,得到新的猜测区间,重复执行若干次后范围逐渐缩小直到猜中
二分查找不同于普通的遍历顺序查找 顺序查找在最坏的情况下需要查找N次 大大降低了效率,而二分查找的优势在数据量小的情况下可能不明显 但是数据量越大越能展现二分查找的优势

实现方法

public class ArrayDemo {
    public static void main(String[] args) {
        int [] nums = {1,2,3,4,5,6,7};  //二分查找的前提条件是数组有序
        int formIndex = 0;              //前指针
        int toIndex = nums.length-1;    //后指针
        int key = 5;    //查找的值
        while(formIndex <= toIndex){
            int mid = (formIndex+toIndex)>>>1;  //每次查找需要用到的中间指针
            if (nums[mid] == key){      //nums[mid] == key 查找成功 返回下标并退出循环
                System.out.println(mid);
                break;
            }else if (nums[mid] > key){ // nums[mid] > key 说明查找的值在本次中间指针的左半部分
                toIndex = mid-1;
            }else {
                formIndex = mid+1; 
                //只剩最后一种情况nums[mid] < key  说明查找的值在本次中间指针的右半部分
            }
        }

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值