博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二分搜索法
阅读量:6835 次
发布时间:2019-06-26

本文共 1122 字,大约阅读时间需要 3 分钟。

    二分搜索法,它充分利用了间的关系,采用分治策略,可在最坏的情况下用O(log n)完成任务。它的基本思想是,将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法运算终止。

   总结一下,二分搜索需要注意的点有以下几条:

  1. 数组一定记得要先排序!!!(不排序会出现各种莫名其妙的返回值)
  2. 取中位值的时候,需要注意整数加法是否会溢出的问题。
  3. 当查找不在数组内的元素时,需要返回-1代表没有找到。
  4. 如果出现待查找元素有重复的元素,需要确定返回的是哪一个元素的下标。
  5. /**     * description : 二分查找。     * @param array 需要查找的有序数组     * @param from 起始下标     * @param to 终止下标     * @param key 需要查找的关键字     * @return     */    public static 
    > 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); }

    这是二分搜索法的代码例题。

转载于:https://www.cnblogs.com/F9801/p/8963226.html

你可能感兴趣的文章
java获取在各种编码下中文及英文的字符个数
查看>>
数组知识0913
查看>>
ECharts+百度地图网络拓扑应用
查看>>
LCA
查看>>
用 scp 命令通过 SSH 互传文件
查看>>
关于一些Linux SVN的安装使用
查看>>
B14-iOS开发中的几种存储方式
查看>>
Node js 嵌入式模板引擎 ejs 的使用
查看>>
vue 事件修饰符
查看>>
自定义的一个JDBC工具类
查看>>
数据类型(列类型)
查看>>
hihocoder [Offer收割]编程练习赛14
查看>>
mongodb_服务端安装及连接
查看>>
将baidu地图中的baidu logo去掉
查看>>
面向对象组合继承
查看>>
Oracle 数据库范式
查看>>
[设计模式]<<设计模式之禅>>模板方法模式
查看>>
281. Zigzag Iterator - Medium
查看>>
205. Isomorphic Strings - Easy
查看>>
去除Android打开软件出现的红边框
查看>>