`

Java实现二分查找(递归与非递归)

 
阅读更多
    前提条件:使用二分查找的数组必须是有序的。

public class BinarySearch {  
  
    public static void main(String[] args) {  
        int[] array = new int[] { 1, 2, 3, 4, 5, 6, 7, 9, 10 };  
        System.out.println(search1(array, 0, array.length - 1, 10));  
        System.out.println(search2(array, 10));  
    }  
  
    /** 
     * 递归写法 
     * 
     * @param array 
     * @param low 
     * @param high 
     * @param value 
     * @return int 
     */  
    public static int search1(int[] array, int low, int high, int value) {  
        int mid = (low + high) / 2;  
        if (array[mid] == value) {  
            return mid;  
        } else if (array[mid] < value) {  
            return search1(array, mid + 1, high, value);  
        } else {  
            return search1(array, 0, mid - 1, value);  
        }  
    }  
  
    /** 
     * 非递归写法 
     * 
     * @param array 
     * @param value 
     * @return int 
     */  
    public static int search2(int[] array, int value) {  
        int low = 0;  
        int high = array.length - 1;  
  
        while (low <= high) {  
            int mid = (low + high) / 2;  
            if (array[mid] == value) {  
                return mid;  
            } else if (array[mid] < value) {  
                low = mid + 1;  
            } else {  
                high = mid - 1;  
            }  
        }  
        return -1;  
    }  
}  









分享到:
评论

相关推荐

    二分查找的递归与非递归实现(java版)

    二分查找的递归与非递归实现(java版)

    Java实现二分查找的递归和非递归算法

    Java实现二分查找的递归和非递归算法

    分别用递归和非递归方法实现二分查找算法 的完整程序

    分别用递归和非递归方法实现二分查找算法 的完整程序,indexof()返回的是循环实现的二分法查找,getindex()实现的是递归算法实现的二分法查找。

    Java,二分查找,递归以及非递

    基于java语言的二分查找,递归以及非递归算法,仅供学习娱乐

    JAVA实现二分查找

    JAVA用递归和非递归的方法实现二分查找

    数据结构与算法(JAVA篇)之递归算法(二)

    * 非递归的二分查找:二分查找也可以用非递归的算法,但是分治算法通常要回到递归。分治算 * 法常常是一个方法,在这个方法中含有两个对自身的递归的调用。 * * 分治算法:递归的二分查找是分治算法的一种...

    BinarySearchNoRecur_java编程_

    实现二分查找,非递归的二分查找实现代码,简单地二分查找实现代码

    java源码包2

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码...

    【超全!】图解Java数据结构和算法(共195集)【资料+视频+课件+代码+笔记】

    稀疏数组、单向队列、环形队列、单向链表、双向链表、环形链表、约瑟夫问题、栈、前缀、中缀、后缀表达式、中缀表达式转换为后缀表达式、递归与回溯、迷宫问题、八皇后问题、算法的时间复杂度、冒泡排序、选择排序、...

    java源码包---java 源码 大量 实例

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    java笔试常见的算法题

    全排序、二分查找、冒泡排序、阶乘、最大公约数、最小公倍数、打印九九乘法表、判断素数、快速排序的递归实现和非递归实现、随机数、字符串操作、50人围成一圈,数到3和3的倍数的人出局,最后剩下的人是谁。...

    JAVA上百实例源码以及开源项目源代码

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    java源码包4

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码...

    java源码包3

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码...

    JAVA上百实例源码以及开源项目

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java二进制IO类与文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系...

    Java数据结构和算法中文第二版(1)

    递归的二分查找 汉诺(Hanoi)塔问题 归并排序 清除递归 一些有趣的递归应用 小结 问题 实验 编程作业 第7章 高级排序 希尔排序 划分 快速排序 基数排序 小结 问题 实验 编程作业 第8章 二叉树...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Java二进制IO类与文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系...

    java 面试题 总结

    但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地...

Global site tag (gtag.js) - Google Analytics