首页

文章

什么叫java中的二分查找法

发布网友 发布时间:2022-04-19 19:43

我来回答

4个回答

热心网友 时间:2022-04-04 02:16

  1、算法概念。

  二分查找算法也称为折半搜索、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。请注意这种算法是建立在有序数组基础上的。

  2、算法思想。

  ①搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;

  ②如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。

  ③如果在某一步骤数组为空,则代表找不到。

  这种搜索算法每一次比较都使搜索范围缩小一半。

  3、实现思路。

  ①找出位于数组中间的值,并存放在一个变量中(为了下面的说明,变量暂时命名为temp);

  ②需要找到的key和temp进行比较;

  ③如果key值大于temp,则把数组中间位置作为下一次计算的起点;重复① ②。

  ④如果key值小于temp,则把数组中间位置作为下一次计算的终点;重复① ② ③。

  ⑤如果key值等于temp,则返回数组下标,完成查找。

  4、实现代码。

/**
     * description : 二分查找。
     * @param array 需要查找的有序数组
     * @param from 起始下标
     * @param to 终止下标
     * @param key 需要查找的关键字
     * @return
     */
    public static <E extends Comparable<E>> int binarySearch(E[] array, int from, int to, E key) throws Exception {
        if (from < 0 || to < 0) {
            throw new IllegalArgumentException("params from & length must larger than 0 .");
        }
        if (from <= to) {
            int middle = (from >>> 1) + (to >>> 1); // 右移即除2
            E temp = array[middle];
            if (temp.compareTo(key) > 0) {
                to = middle - 1;
            } else if (temp.compareTo(key) < 0) {
                from = middle + 1;
            } else {
                return middle;
            }
        }
        return binarySearch(array, from, to, key);
    }

热心网友 时间:2022-04-04 03:34

算法思想。
  ①搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;
  ②如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。
  ③如果在某一步骤数组为空,则代表找不到。
  这种搜索算法每一次比较都使搜索范围缩小一半。

热心网友 时间:2022-04-04 05:08

对于排序过的目标集合,然后每次都找中间的值,和目标值比大小,如果相等则结束,不然就到相应的半边继续这个步骤,直到找到目标为止
因为每次找的范围都是上一次的一半,所以效率比直接查找快

热心网友 时间:2022-04-04 07:16

看看这个,有介绍,有代码

参考资料:http://ke.baidu.com/view/75441.htm

历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 变形金刚08动画的问题 变形金刚08动画日语版剧情介绍 高分!换显卡nvidia控制面板被我卸了,重新安装显卡驱动后没了nvidia控... 我的nvidia控制面板被卸载了 怎么找回啊 卸载后 这个画面看着很奇怪_百 ... 李卓彬工作简历 林少明工作简历 广东工业职业技术学院怎么样 郑德涛任职简历 唐新桂个人简历 土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 网络诈骗定罪标准揭秘 “流水不争先”是什么意思? mc中钻石装备怎么做 为什么我的MC里的钻石块是这样的?我想要那种。是不是版本的问题?如果是... 带“偷儿”的诗句 “君不见巴丘古城如培塿”的出处是哪里 带“奈何”的诗句大全(229句) 里翁行()拼音版、注音及读音 带“不虑”的诗句 “鲁肃当年万人守”的出处是哪里 无尘防尘棚 进出口报关流程,越详细越好。谢谢大家指教。 双线桥不是看化合价升多少就标多少的吗?为什么CL2+2KI=2KCL+I2中I失... java算法有哪些分别 java关键字查询算法 JAVA数组中查找算法中equals和==的问题 JAVA中的查找算法如何实现... 高手帮帮忙 java 线性查找算法 大专英语题库在哪搜 surprise island Lily英文题库答案是什么 百题斩和钉题库两个里面的英语统考题库哪个比较好 怎么用英语介绍猿题库 大学英语六级考试翻译题库 2020年12月大学英语B统考题库? 英语试题!! 英语题库单选题目 2020年9月大学英语B统考题库? 初中英语题库 英语题库They are not__sale怎么做 试题库管理系统用英语怎么说比较好试题库 试题库与试题库系统 翻译成英文 什么软件可以搜英语题库,带答案解析的? 大学英语四级题库?含答案!百度云 java 多条件 查询 算法 用java做简单交通查询算法 快速查找算法 具体文字描述 附java程序更好 拜托各... java线性查找算法的平均次数为什么是n/2 用Java实现搜索算法的关键技术是什么呀? 用JAVA写一个完整的折半查找法!!! java查找二叉树中的元素以及确定位置 java 二分查找法 java版递归算法实现单链表的求长度、查找、替换等操作 JAVA里二分查找法 相关疑问 JAVA 二分算法只能对数字进行查找吗 用java实现,找出分数相同的同学的算法(不考虑去... 微信好友不小心删除了还能找回来吗? vivos1pro是曲屏吗? 能够保终身的医疗保险有哪些? 商业养老保险不是终身 请问商业保险不保终身吗 商业保险包括哪些 如果自己把商业保险已经交满了,那接下来该怎么办? 商业保险二十年保终身是什么意思
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com