二分查找:(折半查找)
前提:数组必须是有序的。
思想:每次都猜中间的那个元素,比较大或者小,就能减少一半的元素。
思路:A:定义最小索引,最大索引。
B:比较出中间索引
C:拿中间索引的值和要查找的元素进行比较
相等:就直接返回当前的中间索引
不相等:
大了:往左边找
小了:往右边找
D:重新获取最小索引或者最大索引
大了:往左边找
max = mid-1;
小了:往右边找
min = mid+1;
E:回到B的位置

public static void main(String[] args) {
//定义一个数据
int[] arr = {11,22,33,44,55,66,77};

//写功能实现
int index = getIndex(arr,33);
System.out.println("index:" + index);//2

//如果传入值不存在:
int index = getIndex(arr.253);
Systme.out.pirntln("index:" + index);//-1

}

/*
* 两个明确:
* 返回值类型:int
* 参数列表:int[] arr,int value
*/

public static int getIndex(int[] arr,int value){
//定义最大索引,最小索引
int max = arr.length -1;
int min = 0;

//计算出中间索引
int mid = (max + min)/2;

//拿中间索引的值和要查找的值进行比较
while(arr[mid] != value){
if(arr[mid] > value){
max = mid-1;
}else if(arr[mid]<value){
min = mid + 1;
}
//判断如果值不存在 返回-1
if(min>max){
return -1;
}
mid = (min + max)/2;
}
return mid;
}

Arrays类:专门对数组进行的方法类
注意事项:
有一个无序数组 eg:{24,69,80,57,13}
不可先冒泡排序,再使用二分查找,应该基本查找
因为,冒泡排序后会更改数组的顺序。
Arrays:针对数组进行操作的工具类,比如说排序和查找。
1.public static String toString(int[] a) 把数组转成字符串
2.public static void sort(int[] a) 对数组进行排序
3.public static int binarySearch(int[] a,int key) 二分查找

public static void main(String[] args) {
//定义一个数组
int [] arr = {24,69,80,57,13};

//public static String toString(int[] a) 把数组转成字符串
System.out.println("排序前:" + Arrays.toString(arr));

//public static void sort(int[] a) 对数组进行排序
System.out.println(Arrays.sort(arr));

//使用二分查找需要有序数组{13, 24, 57, 69, 80} 这个数组是第二个方法排序后的结果
//public static int binarySearch(int[] a,int key) 二分查找
System.out.println(Array.binarySearch(arr,57));//2
System.out.println(Array.binarySearch(arr,577));//-6
}

Java中的二分查找的更多相关文章

  1. Java中常用的查找算法——顺序查找和二分查找

    Java中常用的查找算法——顺序查找和二分查找 神话丿小王子的博客 一.顺序查找: a) 原理:顺序查找就是按顺序从头到尾依次往下查找,找到数据,则提前结束查找,找不到便一直查找下去,直到数据最后一位 ...

  2. Java学习之二分查找算法

    好久没写算法了.只记得递归方法..结果测试下爆栈了. 思路就是取范围的中间点,判断是不是要找的值,是就输出,不是就与范围的两个临界值比较大小,不断更新临界值直到找到为止,给定的集合一定是有序的. 自己 ...

  3. STL中的二分查找———lower_bound,upper_bound,binary_search

    关于STL中的排序和检索,排序一般用sort函数即可,今天来整理一下检索中常用的函数——lower_bound , upper_bound 和 binary_search . STL中关于二分查找的函 ...

  4. STL中的二分查找

    本文转载于https://blog.csdn.net/riba2534/article/details/69240450 使用的时候注意:必须用在非递减的区间中 二分查找的原理非常简单,但写出的代码中 ...

  5. cuda中的二分查找

    使用背景 通常,在做高性能计算时,我们需要随机的连接某些点.这些点都具有自己的度量值,显然,度量值越大的值随机到的概率就会越大.因此,采用加权值得方法: void getdegreeSum(DG *g ...

  6. STL中的二分查找——lower_bound 、upper_bound 、binary_search

    STL中的二分查找函数 1.lower_bound函数 在一个非递减序列的前闭后开区间[first,last)中.进行二分查找查找某一元素val.函数lower_bound()返回大于或等于val的第 ...

  7. 二维数组中的查找 - Java版 -简单二分查找 -<<剑指Offer>> -水题

    如题 (总结) -认真读题, 还WA了一次, https://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e?tpId=13&am ...

  8. Java实现的二分查找算法

    二分查找又称折半查找,它是一种效率较高的查找方法. 折半查找的算法思想是将数列按有序化(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以有序数列的中点位置为比较对象,如果要找的元素值小 于该中点 ...

  9. Java:冒泡排序 | 二分查找

    2018-10-29 20:16:46 冒泡排序 例子(对数字排序): 假设有这样一组数字:32, 8, 128, 2, 64 现在对其进行冒泡排序(*表示下次比较的开始数字): 32>8? t ...

随机推荐

  1. python中面向对象&装饰器

    类的定义 基本形式: class ClassName(object): Statement 1.class定义类的关键字 2.ClassName类名,类名的每个单词的首字母大写. 3.object是父 ...

  2. coding++:js实现基于Base64的编码及解码

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. html第一个程序

    2020-04-05  每日一例第27天 1.打开记事本,输入html格式语言: 2.后台代码注释: <html> <head><!--标题语句--> <ti ...

  4. Spring Boot整合Servlet,Filter,Listener,访问静态资源

    目录 Spring Boot整合Servlet(两种方式) 第一种方式(通过注解扫描方式完成Servlet组件的注册): 第二种方式(通过方法完成Servlet组件的注册) Springboot整合F ...

  5. iOS - scrollView与headerView的视差滚动实现思路

    假设场景:viewController里面有一个scrollView,该scrollView有一个headerView.现在需要将scrollView的滚动contentOffset与headerVi ...

  6. [原创] 关于步科eview人机界面HMI的使用 - HMI做Slave - Modbus RS485通讯

    做测试设备,或者自动化设备常常用到HMI 触摸屏 我有个案子用到了 步科的eview 触摸屏 型号 ET070 我的是单片机主板 控制 HMI显示,通讯用485  MODBUS 单片机板充当 主控 , ...

  7. cls

    class : python中cls代表的是类的本身,相对应的self则是类的一个实例对象. class Person(object): def __init__(self, name, age): ...

  8. 【linux】【tomcat】linux下定时重启tomcat 【CentOS 6.4】【CentOS 7.6】

    本章内容以CentOS 6.4   和   CentOS  7.6  两个版本为例.[6和7的命令不同] 转载 :https://www.cnblogs.com/sxdcgaq8080/p/10730 ...

  9. 数据挖掘 决策树 Decision tree

    数据挖掘-决策树 Decision tree 目录 数据挖掘-决策树 Decision tree 1. 决策树概述 1.1 决策树介绍 1.1.1 决策树定义 1.1.2 本质 1.1.3 决策树的组 ...

  10. IP和端口查询