有序数组中的二分查找

       有序数组中的二分查找,简单理解的话,就相当于小时候玩过的一个小游戏:猜数。比如两个小朋友真真和飞飞玩猜数游戏。真真让飞飞猜1~50之间的那个数字17,当然飞飞事先不知道。飞飞就按二分查找这个比较快的方法来猜,他先猜25,然后真真提示说说偏大了;飞飞再猜13,真真又提示偏小了;飞飞再猜19,真真又提示说偏大了;飞飞于是猜16,真真提示说偏小了;飞飞再猜18,真真说偏大了。最后飞飞笑了笑,说出了正确的答案17。

       这个游戏过程中飞飞总共猜了5次,这就是有序数组中二分查找的通俗理解。它可以快速地找到你要找到的数,因为每次猜数都可以帮你排除一半而缩小查找范围。

 

用java来实现可以用以下代码表示:

int[] a={0,1,2,3,4,5,6,7,8,9,10};

public int BinarySerach(int key){       
        int low=0;
        int high=a.length-1;
        while(true){
            int mid=(low+high)/2;
            if(a[mid]==key){
                return mid;
            }
            if(low>high){
                return a.length;
            }
            else {
                if(a[mid]<key){
                    low=mid+1;
                }
                else{
                    high=mid-1;
                }
            }         
        }       
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值