java二分查找法_java算法之二分查找法的实例详解
java算法之二分查找法的实例详解
原理
假定查找范围为一个有序数组(如升序排列),要从中查找某一元素,如果该元素在此数组中,则返回其索引,否则返回-1。通过数组长度可取出中间位置元素的索引,将其值与目标值比较,如果中间位置元素值大于目标值,则在左部分进行查找,如果中间位置值小于目标值,则在右部分进行查找,如此循环,直到结束。二分查找算法之所以快是因为它没有遍历数组的每个元素,而仅仅是查找部分元素就能找到目标或确定其不存在,当然前提是查找范围为有序数组。
Java的简单实现
package me.geed.algorithms;
public class BinarySearch {
/**
* 从一个有序数组(如升序)中找到值为key元素
* @param key
* @param array
* @return 如果找到目标元素,则返回其在数组中的索引,否则返回-1
*/
public static int find(int key, int[] array){
int low = 0;
int high = array.length - 1;
while (low <= high) {
int mid = low + (high - low) / 2;
if (array[mid] > key) {
high = mid - 1;
} else if (array[mid] < key) {
low = mid + 1;
} else {
return mid;
}
}
return -1;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] array = {2, 3, 5, 9, 10, 13, 23, 45, 78, 89, 100, 128, 256};
System.out.println("目标元素索引值:" + BinarySearch.find(9, array));
System.out.println("目标元素索引值:" + BinarySearch.find(26, array));
}
}
输出结果为:
目标元素索引值:3
目标元素索引值:-1
二分查找算法的时间复杂度
假设范围数组长度为N,则二分查找的时间复杂度为O(logN)
以上就是java算法中二分查找的实例详解,如有疑问请留言或到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
java二分查找法_java算法之二分查找法的实例详解相关推荐
- java objectoutputstream怎么用_java序列化与ObjectOutputStream和ObjectInputStream的实例详解...
java序列化与ObjectOutputStream和ObjectInputStream的实例详解 一个测试的实体类: public class Param implements Serializab ...
- java mysql教程基于_java基于jdbc连接mysql数据库功能实例详解
本文实例讲述了java基于jdbc连接mysql数据库的方法.分享给大家供大家参考,具体如下: 一.JDBC简介 Java 数据库连接,(Java Database Connectivity,简称JD ...
- java 定义抽象变量_Java抽象类和抽象方法定义与用法实例详解
本文实例讲述了Java抽象类和抽象方法定义与用法.分享给大家供大家参考,具体如下: 一.Java抽象类 1.抽象类的说明 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都 ...
- mysql删除重复数据只保留一条_mysql查找删除重复数据并只保留一条实例详解
有这样一张表,表数据及结果如下: school_id school_name total_student test_takers 1239 Abraham Lincoln High School 55 ...
- php去除重复的数据保留一条,mysql查找删除重复数据并只保留一条实例详解
有这样一张表,表数据及结果如下: school_id school_name total_student test_takers 1239 Abraham Lincoln High School 55 ...
- java构造方法重载_Java 重载、重写、构造函数的实例详解
Java 重载.重写.构造函数的实例详解 方法重写 1.重写只能出现在继承关系之中.当一个类继承它的父类方法时,都有机会重写该父类的方法.一个特例是父类的方法被标识为final.重写的主要优点是能够定 ...
- java编译不报错但运行啥都没_java编译时与运行时概念与实例详解
java编译时与运行时概念与实例详解 发布于 2020-7-29| 复制链接 本篇文章通过实例对 java程序编译时与运行时进行了详解,需要的朋友可以参考下 Java编译时与运行时很重要的概念,但是一 ...
- java 远程shell脚本_java通过ssh连接服务器执行shell命令详解及实例
java通过ssh连接服务器执行shell命令详解 java通过ssh连接服务器执行shell命令:JSch 是SSH2的一个纯Java实现.它允许你连接到一个sshd 服务器,使用端口转发,X11转 ...
- java return返回值_java中关于return返回值的用法详解
我们输入一个条件时,系统就会对这个条件进行判断,然后给出一个返回时的结论,我们把这个结果看做是返回值.在java里可以使用return语句来进行返回,从字面意思就能很好的理解它的用法了.下面我们就re ...
最新文章
- 【Linux】3_基本权限UGO的命令(chmod和chown)
- LaTeX 总决式 | 重剑无锋,大巧不工
- php钩子是啥意思,thinkphp钩子是什么意思
- ZOJ 3826 Hierarchical Notation 模拟
- Python 模块安装失败
- python基础7-函数
- 微信小程序 自定义picker封装成插件实现二级三级四级联动
- html 确定取消dialog,弹出一个带确认和取消的dialog实例
- Python三大神器之Virtualenv
- java语言难度最大的地方_学习难度最高的五大编程语言
- Eclipse设置护眼豆沙绿
- c语言实验八 二维数组,☆C语言实验六(二维数组、字符串数组).doc
- 【latex】Latex解决表格过宽问题,自适应调整宽度;自动调整适合的表格大小
- 公司总经理KPI考核指标
- word换pdf并且自动生成目录
- 若依前后台分离生成主子表
- iebook超级精灵服务业务蜕变始末
- 曙光tc4000a计算机为超级微型计算机,自考计算机应用基础判断题试题答案
- cct计算机考试介绍(全)
- matlab中abs函数如何用,Abs函数(ABS函数怎么用)
热门文章
- 开贴整理QtEmbedded/Qtopia FAQ --- 不可不看的精华都在这里哦[转]
- 安装编译PHP7.X
- redux和react-redux的使用详解
- 擒贼先擒王,简单谈一下JavaScript作用域链(Scope Chain)
- 阿里巴巴陈武:通过亿级用户App的实践验证,锤炼高质量APM体系
- Zabbix 监控Mysql数据库及主从数据库
- 学习结构[记录]类型(9) - 变体结构
- Visual Studio 2005 Professional Released
- mysql5.5设置字符编码
- crontab执行脚本中文乱码,手动执行没有问题