为了账号安全,请及时绑定邮箱和手机立即绑定

算法之二分查找

标签:
Java 算法

二分查找只要把查找边界的定义明确,再定义好查找结束的条件。就可以很简单地理解了。

Java代码:
public class BinarySearch {

    /**
     * 查找
     * @param sortedArray 已排序好的数组
     * @param key 需要查找的key
     * @return key 所在的位置
     */
    public static <T extends Comparable<T>> int search(T[] sortedArray, T key) {
        // 在[lo..hi]范围查找
        int lo = 0, hi = sortedArray.length - 1;
        while (lo <= hi) {
            int mid = lo + (hi - lo) / 2; // 防止int越界bug
            int cmp = key.compareTo(sortedArray[mid]);
            if (cmp < 0) hi = mid - 1;
            else if (cmp > 0) lo = mid + 1;
            else return mid;
        }
        return -1; // 如果没有找到就返回-1。
    }
}

需要注意的是求mid时候的int越界问题。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消