首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >二分查找算法

二分查找算法

作者头像
红目香薰
发布2022-11-29 09:37:42
发布2022-11-29 09:37:42
39400
代码可运行
举报
文章被收录于专栏:CSDNToQQCodeCSDNToQQCode
运行总次数:0
代码可运行

介绍

二分查找(Binary Search)也称折半查找,它是一种效率较高的查找方法,但二分查找要求线性表必须采用顺序存储结构,并且表中元素按关键字有序排列。

他的核心思想是:首先确定该数组的中间下标:mid = (left + right) / 2,然后让arr[mid]和要和查找的元素比较,如果要查找的元素更大,说明应该向右查找,反之向左;将左(右)边当成一个新数组,重复第一第二步,即进行递归。找到了就结束递归,或者遍历完了数组也没找到,也结束递归。

代码语言:javascript
代码运行次数:0
运行
复制
public static int binarySearch(int[] arr, int num) {
    return binarySearch(arr, 0, arr.length - 1, num);
}

public static int binarySearch(int[] arr, int left, int right, int num) {
    //如果没有找到
    if (left > right || num < arr[0] || num > arr[arr.length - 1]) {
        return -1;
    }
    //获取中间索引
    int mid = (left + right) / 2;
    //往左边递归找
    if (num < arr[mid]) {
        return binarySearch(arr, left, mid - 1, num);
    }
    //往右边递归找
    else if (num > arr[mid]) {
        return binarySearch(arr, mid + 1, right, num);
    }
    //数据位置找到
    else {
        return mid;
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-03-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档