问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

什么叫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

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
国产钢琴哪些品牌大全 hailun是什么牌子钢琴 人工智能时代的职业特点 人工智能硬件选哪家专业? 剁椒鱼头的做法简单三步 热水器出水口根部漏水怎么办 电热水器为什么用时间长了底部会漏水? ps不能填充因为暂存盘已满 北京哪个板面店培训 北京成寿寺小吃街有哪些 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是曲屏吗? 能够保终身的医疗保险有哪些? 商业养老保险不是终身 请问商业保险不保终身吗 商业保险包括哪些 如果自己把商业保险已经交满了,那接下来该怎么办? 商业保险二十年保终身是什么意思