在java中,常用的查找有两种:

1、顺序查找

2、二分查找

18.1 顺序查找

简单。

18.2 二分查找

非常重要,用到递归的方法。

下图为二分查找演示代码运行时,内存中的运行情况。

二分查找演示代码如下:

 1 /**日期:2016-03-06
 2  * 功能:二分查找演示
 3  */
 4 package test;
 5
 6 public class Demo4 {
 7
 8     public static void main(String[] args) {
 9         // TODO Auto-generated method stub
10
11         //arr如果不是按从小到大的顺序排列,则先进行排序
12         int arr[]={1,2,3,4,5,6};
13         BinaryFind bf=new BinaryFind();
14         bf.find(0, arr.length-1, 1, arr);
15     }
16
17 }
18
19 class BinaryFind
20 {
21     //val为要找的数;arr为待查找的数组(已经按从小到大的方式排序)
22     public void find(int leftIndex,int rightIndex,int val,int arr[])
23     {
24         //首先找到arr中间位置的数
25         int middleIndex=(leftIndex+rightIndex)/2;
26         int middleVal=arr[middleIndex];
27
28         if(leftIndex<=rightIndex)
29         {
30             //如果要找的数val比数组arr中间的数要小,则应该到middleVal左侧的数种去找
31             if(val<middleVal)
32             {
33                 //此处用到了递归的方法
34                 find(leftIndex,middleIndex-1,val,arr);
35             }else if(val>middleVal)
36             {
37                 find(middleIndex+1,rightIndex,val,arr);
38             }else if(val==middleVal)
39             {
40                 System.out.println("找到数"+val+"\n下标为"+middleIndex);
41             }
42         }
43     }
44 }

运行结果如下:

1 找到数1
2 下标为0

转载于:https://www.cnblogs.com/PistonType/p/5248949.html

韩顺平循序渐进学java 第18讲 查找相关推荐

  1. 韩顺平循序渐进学java 第19讲 多维数组

    19.1 二维数组 高维数组在工作中用到的不多,所以只介绍二维数组. 1.定义 语法:类型 数组名[][]=new 类型[大小][大小] 比如:int a[][]=new int[2][3] 2.分析 ...

  2. 韩顺平循序渐进学java 第12讲 多态

    12.1 多态-四大特征之四 12.1.1 概念 所谓多态,就是指一个引用(类型)在不同情况下的多种状态. 可以这样理解:多态是指通过指向父类的指针,来调用在不同子类中实现的方法. 12.1.2 注意 ...

  3. 韩顺平循序渐进学java 第13讲 抽象类.接口

    13.1抽象类 13.1.1 概念 当父类的一些方法不能确定时,可以用abstract关键字来修饰该方法,称为抽象方法,用abstract来修饰该类,称为抽象类. 13.1.2 抽象类-深入讨论 抽象 ...

  4. 网沙(爱玩啥)韩顺平.循序渐进学.java.从入门到精通系列视频分享

     网沙(爱玩啥)韩顺平.循序渐进学.java.从入门到精通系列视频分享 韩顺平.循序渐进学.java.从入门到精通.第0讲-开山篇 韩顺平.循序渐进学.java.从入门到精通.第1讲-内容介绍.项 ...

  5. 韩顺平循序渐进学java 第21.22.23.24讲 集合

    21.1 引出问题 一个问题? 前面我们学习了数组,充分体会到数组的优越性,就是可以存储同一类型的数据,但是我们假设有这样的需求,大家看看如何解决? 请做一个公司职员薪水管理系统,要求完成如下功能: ...

  6. 韩顺平循序渐进学java 第10.11讲 继承.重载.覆盖

    10.1 继承-四大特征之三 10.1.1 概念 继承可以解决代码复用,让编程更加接近人类思维.当多个类存在相同的属性(变量)和方法时,可以从这些类中抽象出父类(比如刚才的Student),在父类中定 ...

  7. 从零学Java(18)之三元运算符

    作者简介 作者名:编程界明世隐 简介:CSDN博客专家,从事软件开发多年,精通Java.JavaScript,博主也是从零开始一步步把学习成长.深知学习和积累的重要性,喜欢跟广大ADC一起打野升级,欢 ...

  8. 【java学习】从头再来一遍(附韩顺平_循序渐进学Java零基础【完整笔记】)

    计划任务 1.每天学习至少2个小时 2.完成教程中的课程作业 3.记录学习笔记 笔记下载-泉哥博客https://www.quange.cc/note/java/learn-java/712.html

  9. 【数据结构与算法】尚硅谷韩顺平老师+含java代码(更新中)

    数据结构与算法 程序 = 数据结构 + 算法 数据结构:树.链表.图等 线性结构 数组.队列.链表和栈 非线性结构 二维数组,多维数组,广义表,树结构,图结构 稀疏数组 稀疏数组的好处时压缩数组 在这 ...

  10. java基础 (韩顺平)

    最近看的是韩顺平老师的java课程(b站).课程讲的比较细致,非常适合没有基础的初学者,推荐大家去b站观看,这个是我个人认为容易忽略的一些笔记. 基本规则 JVM(java虚拟机)保证java可以跨平 ...

最新文章

  1. C/C++获取指定网口的IP地址
  2. asp教室使用_为什么要在教室中使用开放式硬件?
  3. wdatepicker 设置只显示时分_液晶显示多功能电力仪表EX8-33
  4. 字符串资源的内部格式
  5. 【转】Freeglut 2.6.0 + VS2008下配置方法
  6. Emotet***病毒升级,对抗杀毒软件的能力再次增强
  7. Spring中的refresh()
  8. 浅析银行业如何做数据治理
  9. 12306Bypass-分流抢票 火车票抢票攻略
  10. 王家林人工智能AI第15课:通过SVM进一步改进在Social Network上销售汽车推荐系统的精准性 老师微信13928463918
  11. 网站在多IE版本兼容性测试工具IETester的使用方法
  12. vs2019,C#,MySQL创建图书管理系统3(管理员相关页面的布局和设计实现,图书显示,图书添加)
  13. 课后作业十(定点计算)
  14. 打开图片或者视频显示“文件系统错误-2147416359”
  15. 使用kvm部署虚拟化服务器,KVM虚拟化(KVM的部署及使用)
  16. 特斯拉强制返岗遭亚马逊微软挖人:“不喜欢马斯克的速来,我们可居家办公”
  17. 数字IC设计的第一步——Synopsys EDA Tools的安装
  18. CSS初始化(科普)
  19. Mac 查看本机ip地址
  20. lda plda主题模型

热门文章

  1. 如何将另外一个表里的数据与联动_如何快速高效省事的将一块SSD的数据转移到另外一块SSD上?...
  2. 2022年 微信大数据挑战赛
  3. latex 图片整行居中 /centering无效
  4. 区块链 xuperchain io.grpc.StatusRuntimeException: UNKNOWN: error execution reverted: execution reverted
  5. xuperchain部署合约Select utxo error, details:NOT_ENOUGH_UTXO_ERR
  6. kubernetes 容器持久化存储PV、PVC、StorageClass
  7. pp什么叫php的事务,ThinkPHP5.0框架事务处理操作简单示例
  8. CF724G. Xor-matic Number of the Graph
  9. 阶段3 2.Spring_02.程序间耦合_1 编写jdbc的工程代码用于分析程序的耦合
  10. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_02 递归_1_递归概念分类注意事项...