【Java】二分法查找
二分法查找
前提:所要查找的数组必须有序
public class Dichotomy {
public static void main(String[] args) {
int[] array = new int[]{-78,-64,-53,-43,-31,-10,-5,0,20,40,62,78,84,96,108};
int dest = -78;
int head = 0;//初始的首索引
int end = array.length - 1;
boolean isFlag = false;
while(head <= end) {
int middle = (head + end ) / 2;//找到中间位置
if(dest == array[middle]) {//比较中间位置的数值与目标数值是否相等
System.out.println("找到了指定元素,位置为:" + middle);
isFlag = true;
break;
}
else if(dest < array[middle]) {//如果目标数值小于中间数值,使尾索引等于中间值减一
end = middle - 1;
}
else if(dest > array[middle]) {//如果目标数值大于中间数值,使首索引等于中间值加一
head = middle + 1;
}
}
if(isFlag == false)
System.out.println("很遗憾,没有找到!");
}
}
【Java】二分法查找的更多相关文章
- java 二分法查找原理
二分法查找原理: 1.只要低位下标不大于高位下标,就进行二分查找(步骤1-3) 2.先在有序的数组中对半查找中间的坐标,如果中标和要查找的下标相等时,找到目标数,那二分结束. 3.如果步骤2没有找到, ...
- Java 二分法查找
算法:当数据量很大适宜采用该方法.采用二分法查找时,数据需是有序不重复的. 基本思想:假设数据是按升序排序的,对于给定值 x,从序列的中间位置开始比较,如果当前位置值等于 x,则查找成功:若 x 小于 ...
- Java二分法查找
二分法查找 /** * 二分法查找 找不到返回-1 * @author yangzi * */ public class TwoFind { public static int twoFind(int ...
- Java - 二分法查找(尚学堂第七章数组)
import java.util.Arrays; public class TestBinarySearch { public static void main(String[] args) { in ...
- java二分法查找实现代码
package util; class BinarySearch { static int binarySearch(int[] array,int goal){//传入排好序的数组和目标数字 int ...
- Java基础(50):二分法查找的非递归实现和递归实现(完整代码可运行,参考VisualGO理解更佳)
一.概念 二分查找算法也称折半查找,是一种在有序数组中查找某一特定元素的搜索算法. 二.算法思想 搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束:如果某一特定元素大于或者 ...
- Java冒泡排序与二分法查找的代码随笔
package javafirst; import java.util.Arrays; class MaoPao{ //升序排列 /** * @param arr 要排序的数组 * @return i ...
- java算法-二分法查找实现
什么是二分法查找 首先,使用二分法查找的前提是:被查找的数组已排好序 具体实现: 假如有一组数为3,12,24,36,55,68,75,88要查给定的值24.可设三个变量front,mid,end分别 ...
- Java中数组二分法查找
算法:当数组的数据量很大适宜采用该方法.采用二分法查找时,数据需是有序不重复的,如果是无序的也可通过选择排序.冒泡排序等数组排序方法进行排序之后,就可以使用二分法查找. 基本思想:假设数据是按升序排序 ...
- java实现二分法查找
一 前提 使用二分法查找的前提是:有序的数组,没有重复的数据元素.如果没有排序过的,需先排序. 二分法查找时使用场景为:数据量较大时 二 代码 package com.xiao.day01; publ ...
随机推荐
- 资源日历关联(Project)
<Project2016 企业项目管理实践>张会斌 董方好 编著 其实,[日历]并不是[任务]的唯一,他还有另一个老相好:[资源]. 是啊,就像张同学给的例子那样,得为一个专门的外聘专家这 ...
- LuoguB2147 求 f(x,n) 题解
Content 求给定 \(x,n\),求 \(f(x,n)=\sqrt{n+\sqrt{(n-1)+\sqrt{(n-2)+\sqrt{\dots+2+\sqrt{1+x}}}}}\) 的值. So ...
- Docker从入门到精通(八)——Docker Compose
恭喜大家,学到这里,对于 docker 的基础玩法大家应该都会了,下面会介绍 docker的一些编排工具. 1.为什么需要 Docker Compose? 官网镇楼:https://www.runoo ...
- python3 5月26日 time模块常用时间转换 &datetime()模块学习 random()
import time 获取当前时间: 指定字符串格式:time.strftime("%Y-%m-%d %H:%M:%S") 当前时间戳:time.time() 当前时间元组格式 ...
- Stun协议实现
在现实Internet网络环境中,大多数计算机主机都位于防火墙或NAT之后,只有少部分主机能够直接接入Internet.很多时候,我们希望网络中的两台主机能够直接进行通信(即所谓的P2P通信),而不需 ...
- Flink使用IDEA进行jar打包
pom文件增加 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>mav ...
- JAVA将Object对象转byte数组
/** * 将Object对象转byte数组 * @param obj byte数组的object对象 * @return */ public static byte[] toByteArray(Ob ...
- UDP&串口调试助手用法(4)
接收配置用法 概览 保存文件 可将数据保存到文件和文件夹 如果选择的时文件,则需要自己手动选择保存的文件. 如果选择的时文件夹,则需要指定文件夹的类型和文件的后缀 支持保存文件类型: 文本文件和二进制 ...
- 【九度OJ】题目1069:查找学生信息 解题报告
[九度OJ]题目1069:查找学生信息 解题报告 标签(空格分隔): 九度OJ [LeetCode] http://ac.jobdu.com/problem.php?pid=1069 题目描述: 输入 ...
- 【LeetCode】380. Insert Delete GetRandom O(1) 解题报告(Python)
[LeetCode]380. Insert Delete GetRandom O(1) 解题报告(Python) 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxu ...