public class Dichotomy {
    
    //定义查找次数
    static int count = 0;
    
    public static void main(String[] args) {
        
        //定义数组
        int [] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        
        //二分法查找
        int result = searchRecursive( array, 0, array.length - 1, 3);
        
        //打印结果
        System.out.println("二分法查找结果为=" + result);
        System.out.println("查找次数为=" + count);
    }
    
    /**
     * 执行递归二分查找,返回第一次出现该值的位置
     *
     * @param array
     *            已排序的数组
     * @param start
     *            开始位置
     * @param end
     *            结束位置
     * @param findValue
     *            需要找的值
     * @return 值在数组中的位置,从0开始。找不到返回-1
     */
    private static int searchRecursive(int[] array, int start, int end, int findValue) {
        
        //数组如果为空则返回-1
        if(array == null){
            
            return -1;
        }
        
        
        
        while(start <= end){
            
            count++;
            
            //获取中间位置
            int middle = (start + end) / 2;
            
            //获取中间值
            int middleValue = array[middle];
            
            if(middleValue == findValue){
                
                return middle;
            }else if(findValue < middleValue){
                
                end = middle - 1;
            }else{
                
                start = middle + 1;
            }
            
        }
        
        return -1;
    }
}

Java二分法的更多相关文章

  1. java二分法来求一个数组中一个值的key

    package TestArray; import java.util.Arrays; /** * 二分法查找 */ public class Test { public static void ma ...

  2. java 二分法查找原理

    二分法查找原理: 1.只要低位下标不大于高位下标,就进行二分查找(步骤1-3) 2.先在有序的数组中对半查找中间的坐标,如果中标和要查找的下标相等时,找到目标数,那二分结束. 3.如果步骤2没有找到, ...

  3. java 二分法学习

    假设有一个数组 { 12, 23, 34, 45, 56, 67, 77, 89, 90 },现要求采用二分法找出指定的数值并将其在数组的索引返回,如果没有找到则返回 -1.代码如下: package ...

  4. java二分法搜索

    二分法就是要将数据每次都分成两份然后再去找到你想要的数据 在二分法查找时要求传入的数据必须已经有序,假设现在为升序,然后每次将所寻找的值与中间值(数组左边界+(右边界-左边界)/2)作比较,大了则去寻 ...

  5. Java - 二分法查找(尚学堂第七章数组)

    import java.util.Arrays; public class TestBinarySearch { public static void main(String[] args) { in ...

  6. Java 二分法查找

    算法:当数据量很大适宜采用该方法.采用二分法查找时,数据需是有序不重复的. 基本思想:假设数据是按升序排序的,对于给定值 x,从序列的中间位置开始比较,如果当前位置值等于 x,则查找成功:若 x 小于 ...

  7. Java二分法查找

    二分法查找 /** * 二分法查找 找不到返回-1 * @author yangzi * */ public class TwoFind { public static int twoFind(int ...

  8. java 二分法

    源码 public class Dichotomy { public static void main(String[] args){ int[] array = new int[12]; for(i ...

  9. java二分法查找实现代码

    package util; class BinarySearch { static int binarySearch(int[] array,int goal){//传入排好序的数组和目标数字 int ...

随机推荐

  1. 1041: [HAOI2008]圆上的整点

    1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4298  Solved: 1944[Submit][Sta ...

  2. window.onload,document.ready

    执行时间 window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行. $(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕. 编写个数不同 wind ...

  3. robotframework2.8.7日志输出List乱码

    今天在完善robotframework的数据分离的时候,需要读取list中的中文信息,在日志输出中,英文显示是正常的:但是中文就出现所谓的乱码情况,如截图所示 对于list中的信息,日志显示乱码:查找 ...

  4. !DOCTYPE 文档类型声明

      1.用途 Web 世界中存在许多不同的文档.只有了解文档的类型,浏览器才能正确地显示文档.HTML 也有多个不同的版本,只有完全明白页面中使用的确切 HTML 版本,浏览器才能完全正确地显示出 H ...

  5. this 和 new 构造函数

    function people(name) {     这样定义是在全局命名空间(global namespace)    name: name,    sayname: function() {   ...

  6. java中表示二进制、八进制、十进制、十六进制

    1.进制 进制是一种记数方式 ,可以用有限的数字符号代表所有的数值.由特定的数值组成. 2.进制的表现形式 二进制: 由0和1两个数字组成. 八进制: 由0-7数字组成,为了区分与其他进制的数字区别, ...

  7. 开发环境MAPLAB下使用仿真器ICD2程序下载流程

    程序下载流程 一.    连接示意图 二.    下载步骤 1.目标板电源断开 2.将仿真器下载端口与电路板JTAG端口有效连接 3.启动MPLAB软件 4.点击MAPLAB软件上方Programme ...

  8. Java工具类之——BigDecimal运算封装(包含金额的计算方式)

    日常对于金额计算,应该都是用的BigDecimal,  可是苦于没有好的工具类方法,现在贡献一个我正在用的对于数字计算的工具类,项目中就是用的这个,简单粗暴好用,话不多说,代码奉上(该工具类需要引入g ...

  9. openstack学习心得:keystone 架构、概念、访问流程

    1.keystone 介绍及其组成 OpenStack Identity 服务提供了一个单一的功能集合,包括管理认证,授权和服务目录. Identity 服务通常作为和用户第一个交互的服务.一旦认证成 ...

  10. eclipse中导入jsp等工程使用过程中常遇问题

    1.导入的工程JSP文件出现报错的情况 这个一般不怎么影响文件的执行,这些文件飘红主要是因为eclipse的校验问题. 具体错误信息:Multiple annotations found at thi ...