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

九路 等级 712 0 0
标签: Java
    //二分查找法非递归实现,在一个有序的数组中查找e元素的位置,找不到返回-1
    public static int binarySearch(int[] data,int e){
        int l = 0;
        int r = data.length - 1;

        while (l <= r){
            int mid = (l + r) / 2;

            if(e > data[mid]){
                l = mid + 1;
            }else if(e < data[mid]){
                r = mid - 1;
            }else {
                return mid;
            }

        }
        return -1;
    }
  //二分查找法的递归实现
    public static int binarySearchRecursion(int[] data,int l,int r,int e){
        int mid = (l + r) / 2;
        if(e > data[mid] ){
            return binarySearchRecursion(data,mid + 1,r,e);
        }else if(e < data[mid] ){
            return binarySearchRecursion(data,l,mid - 1,e);
        }else {
            return mid;
        }
    }
收藏
评论区

相关推荐

二分查找法的递归和非递归的实现
//二分查找法非递归实现,在一个有序的数组中查找e元素的位置,找不到返回1 public static int binarySearch(int data,int e){ int l 0; int r data.length 1; while (l < r){
JAVA回调机制(CallBack)之小红是怎样买到房子的??
JAVA回调机制CallBack 序言最近学习java,接触到了回调机制(CallBack)。初识时感觉比较混乱,而且在网上搜索到的相关的讲解,要么一言带过,要么说的比较单纯的像是给CallBack做了一个定义。当然了,我在理解了回调之后,再去看网上的各种讲解,确实没什么问题。但是,对于初学的我来说,缺了一个循序渐进的过程。此处,将我对回调机制的个人理解,按
ES6+的新语法
1. opts:Object 表示opts的类型是Object类型。 这有点类似.Net中的为泛型指定类型。java中为泛型指定类型是用 **extends**关键词。 //TODO .Net 和 java中相同写法的CASE 2. opts:?Object 表示该类型是非必须的。在java 中有类似的学法。 //TODO java中的相同语法
Java NIO用法
一:NIO简介 java.nio全称java non-blocking IO,是指jdk1.4 及以上版本提供的新的api(New IO非正式叫法) ,为所有的原始类型(boolean类型除外)提供缓存支持的数据容器,使用它可以提供非阻塞式的高伸缩性网络。 Java NIO 由以下三个核心部分组成: * Channels:通道 * B
Java中的native关键字
**一.  什么是Native Method**    简单地讲,一个Native Method就是一个java调用非java代码的接口。一个Native Method是这样一个java的方法:该方法的实现由非java语言实现,比如C。这个特征并非java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern "C"告知C++编译器去
Java中的公平锁和非公平锁实现详解
* [前言](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fblog.csdn.net%2Fqyp199312%2Farticle%2Fdetails%2F70598480%23%E5%89%8D%E8%A8%80) * [ReentrantLock的可重入性分析](https:/
Java中的参数验证(非Spring版)
1\. Java中的参数验证(非Spring版) ======================== 1.1. 前言 ------- * 为什么我总遇到这种非正常问题,我们知道很多时候我们的参数校验都是放在controller层的传入参数进行校验,我们常用的校验方式就是引入下列的jar包,在参数中添加`@Validated`,并对Bean对象的参数做不
Java枚举的作用和用法
从没有枚举的时代说起 在枚举出现之前,如果想要表示一组特定的离散值,往往使用一些常量。例如: \[Java\]  纯文本查看 复制代码 [?](https://www.oschina.net/action/GoToLink?url=http%3A%2F%2Fbbs.itheima.com%2F%23) 01 02 03 04 05 06
Java枚举的用法和原理深入
转载请注明原文地址:[https://www.cnblogs.com/ygj0930/p/10843644.html](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fwww.cnblogs.com%2Fygj0930%2Fp%2F10843644.html) 一:枚举的用法 ======
Java静态方法和实例方法 java中的数组作为形参传入
Java静态方法和实例方法 java中的数组作为形参传入 Java虚拟机 ======= 启动一个Java程序的时候,会诞生一个虚拟机实例,当程序关闭退出时,该实例会消失。 如果一个机器上运行着三个Java程序,即有三个Java虚拟机实例 Java虚拟机会调用某个初始类的main()方法运行一个Java程序,此方法将会作为程序的初始线程启动,任何线程都是
SSH加密原理、RSA非对称加密算法学习与理解
     首先声明一下,这里所说的SSH,并不是Java传统的三大框架,而是一种建立在应用层和传输层基础上的安全外壳协议,熟悉Linux的朋友经常使用到一 个SSH Secure Shell Cilent的工具,本文也是基于此工具加密原理的学习,在SSH的加密原理中,使用到了RSA非对称加密算法,本文也一并做了学习和了解。     **非对称加密算法**
java native方法与JNI实现
<div id="cnblogs\_post\_body" class="blogpost-body"><p><span style="color: #ff0000"><strong>native方法定义:</strong></span> &nbsp; &nbsp; &nbsp; &nbsp;</p> <p>&nbsp; &nbsp; &nbsp; 简单地讲
java中equal()方法和==方法的区别
对于基本数据类型而言。int a = 10;int b = 10; a==b 返回true.对于引用类型而言String c = new String("10");String d = new String("10");c == d 返回false,c.equals(d)返回true. Compares this string to the specifi
JVM 面试
1、内存模型以及分区,需要详细到每个区放什么。 通俗的说, Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。 JVM主要管理两种类型内存:堆和非堆,堆内存(Heap Memory)是在 Java 虚拟机启动时创建,非堆内存(Non-heap Memory)是在JVM堆之外的内存。 简单来说,堆是Java代码可及的内
Tomcat中JVM内存溢出及合理配置
Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个Java虚拟机。Tomcat的内存溢出本质就是JVM内存溢出,所以在本文开始时,应该先对Java JVM有关内存方面的知识进行详细介绍。 **一、Java JVM内存介绍** JVM管理两种类型的内存,堆和非堆。按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,