二分查找的适用条件

二分查找只适用于有序的数列中进行查找(比如数字和字母等),将数列排序后再进行查找

二分查找的运行时间为对数时间O(LONG2 N)

二分查找非递归的实现

/**
* @param arr 待查找的数据 升序排列
* @param target 需要查找的数
* @return 返回对应下标,-1表示没有找到
*/
public static int binarySearch(int[] arr ,int target)
int left = 0;
int right = arr.length-1;
while(left<=right)
{
int mid = (left+right)/2;
if(arr[mid] == target){
return mid;
}else if(arr[mid]>target){
right =mid-1 ;//需要向左查找
}else{
left = mid+1;//需要右边查找
}
return -1;
}

二分查找非递归Algorithm(java)的更多相关文章

  1. 【转】Java实现折半查找(二分查找)的递归和非递归算法

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://wintys.blog.51cto.com/425414/94051 Java二分 ...

  2. 【Algorithm】二分查找(递归实现)

    二分查找(递归实现),Java 代码如下: public class BinarySearch { public static int rank(int key, int[] a) { return ...

  3. c++之折半查找(二分查找)递归与非递归的实现

    递归实现 template<typename T> int binary_search2(const T arr[], const int left, const int right, c ...

  4. python 数据结构之二分查找的递归和普通实现

    二分查找就是待查找的列表进行分半搜索 如下所示 二分查找普通实现: def erfen(alist, item): start = 0 end = len(alist) - 1 while start ...

  5. 二叉树的递归,非递归遍历(java)

    import java.util.Stack; import java.util.HashMap; public class BinTree { private char date; private ...

  6. Python 实现二分查找(递归版)

    二分查找 为什么使用二分查找: python中的列表,一般取值为遍历这个列表,直到取到你想要的值,但是如果你的列表是一个有着百万元素的列表呢,那样for循环遍历列表就会很慢,可能会循环几十万次,才能找 ...

  7. 单链表反转(递归和非递归) (Java)

    链表定义 class ListNode { int val; ListNode next; ListNode(int x) { val = x; } } 非递归实现很简单,只需要遍历一遍链表,在遍历过 ...

  8. 树的广度优先遍历和深度优先遍历(递归非递归、Java实现)

    在编程生活中,我们总会遇见树性结构,这几天刚好需要对树形结构操作,就记录下自己的操作方式以及过程.现在假设有一颗这样树,(是不是二叉树都没关系,原理都是一样的) 1.广度优先遍历 英文缩写为BFS即B ...

  9. 二分查找的实现(java版本)

    一.二分法查找的定义 依次将所查找数据与中心数据对比,根据大小调整数据边界二.二分查找的条件 数组必须排序三.二分查找的原理 四.二分法查找的代码 /* * 从数组当中找到4所在的索引: * {2,4 ...

  10. Java源码分析(1):二分查找 + 循环递归实现

    源代码 源码地址 public static int binarySearch(int[] a, int key) { return binarySearch0(a, 0, a.length, key ...

随机推荐

  1. javasec(四)序列化与反序列化基本原理

    title: javasec(四)序列化与反序列化基本原理 tags: - javasec - 反序列化 categories: - javasec cover: 'https://blog-1313 ...

  2. 机器学习(七):梯度下降解决分类问题——perceptron感知机算法与SVM支持向量机算法进行二维点分类

    实验2 感知机算法与支持向量机算法 一.预备知识 1.感知机算法 二.实验目的 掌握感知机算法的原理及设计: 掌握利用感知机算法解决分类问题. 三.实验内容 设计感知机算法求解, 设计SVM算法求解( ...

  3. Centos7.x 安装 nmon性能监控工具

    一.简介 nmon 工具可以帮助在一个屏幕上显示所有重要的性能优化信息,并动态地对其进行更新.这个高效的工具可以工作于任何哑屏幕.telnet 会话.甚至拨号线路.另外,它并不会消耗大量的 CPU 周 ...

  4. 【Python基础】字典的基本使用

    字典是由一系列键值对组成的无序集合.每个键值对包含一个键和一个对应的值.键必须是不可变的,如字符串.数字或元组.值可以是任意类型的对象.字典可以使用花括号({})或者内置函数dict()来创建. di ...

  5. 聚合短信PHP代码示例短信接口调用CURL方法

    聚合的短信相信大家已经做多了吧,网上的代码看了下就是感觉太繁琐了,不过网上的也是比较好的,用的是post方法,更安全,因我们的项目是在服务器上请求,又绑定了白名单 ,所以弄了个简单点的自己用,参考如下 ...

  6. 收藏!最全Linux思维导图

    收藏!最全Linux思维导图 目录 收藏!最全Linux思维导图 1. 认识 Linux 2. Linux 命令 3. Linux学习路径 4. Linux 桌面介绍 5. FHS:文件系统目录标准 ...

  7. 2022-07-10:以下go语言代码输出什么?A:A,B;B:A,C:A,fatal error;D:fatal error... func main() { var m sync.Mute

    2022-07-10:以下go语言代码输出什么?A:A,B:B:A,C:A,fatal error:D:fatal error- func main() { var m sync.Mutex fmt. ...

  8. 2021-03-26:给定一个正整数N,表示有N份青草统一堆放在仓库里。有一只牛和一只羊,牛先吃,羊后吃,它俩轮流吃草。不管是牛还是羊,每一轮能吃的草量必须是:1,4,16,64…(4的某次方)。谁最先把草吃完,谁获胜。假设牛和羊都绝顶聪明,都想赢,都会做出理性的决定。根据唯一的参数N,返回谁会赢。

    2021-03-26:给定一个正整数N,表示有N份青草统一堆放在仓库里.有一只牛和一只羊,牛先吃,羊后吃,它俩轮流吃草.不管是牛还是羊,每一轮能吃的草量必须是:1,4,16,64-(4的某次方).谁最 ...

  9. docker容器使用(1)

    docker容器使用(1) 几个简单的参数 查看全部的容器 docker ps -a -d 以分离模式运行/在后台运行 -i以交互模式运行 -t在终端运行 -p --publish 端口映射-p表示把 ...

  10. .Net Aspose.Words 生成Word文档

    .Net Aspose.Words 生成Word文档 在开发WinForm项目中,有一需求要生成Word文档,百度学习,记录一下实现方法 NuGet包,找到 Aspose.Words 安装 21.8. ...