Java基础之:查找

查找算法有:线性(顺序)查找,二分(折半)查找,插值查找等.

这里只写出线性和折半两种查找方式,其他查找方式在数据结构的笔记中写出。

线性(顺序)查找

线性查找即从要查找的序列中的第一个开始,一个一个的进行比较,直到序列结束。

int find = 15;

int[] findArr = {1,23,48,15,63,98};

int findIndex = -1; //使用这个变量保存要寻找数的下标,同时可以用它来标志数组中是否存在要找的数

for(int i = 0;i < findArr.length;i++){

if(find == findArr[i]){

findIndex = i;

}

}

if(findIndex != -1){

//说明找到

System.out.println("已找到,下标为:" + findIndex);

}else{

//没有找到

System.out.println("未在数组中找到" + find);

}

折半(二分)查找

/**

二分查找(非递归实现)

请对一个有序数组进行二分查找 {1 , 8 , 10 , 89, 150, 165, 263}

输入一个数看看该数组是否存在此数,并且求出下标,如果没有就提示"没有这个数"。

思路:

1.首先找到一个中间值 89

2.判断要输入的数 是否是中间值 ,若不是 比中间值大还是小

3.比中间值大 ,就在 89 - 263中间 继续寻找

4.比中间值小 ,就在 1 - 89 中间 继续寻找

5.循环执行 3 4

判断条件 左索引 <= 右索引 ,则还可以继续找, 否则找不到退出

*/

import java.util.Scanner;

public class BinarySearch

{

public static void main(String[] args){

Scanner input = new Scanner(System.in);

int[] arr = {1,8,10,89,150,165,263};

int leftIndex = 0;

int rightIndex = arr.length - 1;

int midIndex = (leftIndex + rightIndex) / 2 ;//中间值下标

int midValue = arr[midIndex];//中间值

System.out.println("请输入要查找的数:");

int find = input.nextInt();

int findIndex = -1; //用于表示要查找的数的下标,同时可以使用这个变量作为判断,有没有找到

//一个变量 两种表示,学习这种思维模式

while( leftIndex <= rightIndex){

//重置中间值

midIndex = (leftIndex + rightIndex) / 2;

midValue = arr[midIndex];

if(find == midValue){

findIndex = midIndex;

break;

}else if(find < midValue){

rightIndex = midIndex - 1;

}else{

leftIndex = midIndex + 1;

}

}

if(findIndex != -1){

System.out.println("找到"+find+",它在数组中的下标为:" + findIndex );

}else{

System.out.println("没有找到!");

}

}

}

java找_Java基础之:查找相关推荐

  1. 黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三)

    黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三) 1.1 异常概述与异常体系结构 1.2 JVM遇到异常时的默认处理方案 1.3 异常处理 1.4 异常处理之try--catch ...

  2. java三板斧_JAVA基础学习 三板斧

    JAVA基础学习 -1 三板斧 1. 引子 最近因为工作需要,开始学习JAVA,我之前常用的编程语言是C,C#,C++,基本没有用JAVA,JAVA需要从基础开始学习了. JAVA是从C++优化而来: ...

  3. java 必备_Java基础必备

    标签: 写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享给刚刚入门的Java程序员和打算入Java开发这个行当的准新手们,希 ...

  4. cmd运行java文件_Java基础 前传

    微信搜一搜秃然编程 一.关于MS-DOS MS-DOS(微软磁盘操作系统),是美国微软公司提供的磁盘操作系统.在美国微软公司推出Windows1.0.Windows3.0.1995年8月24日推出的操 ...

  5. java基本命令_java基础篇 快捷键 常见Dos命令等等

    (一) 计算机基础介绍 (二) jdk 安装 (三) 环境变量介绍及配置 (四) HelloWorld 实现 一 . 计算机概述 (1) 计算机 计算机(computer)俗称电脑,是一种用于高速计算 ...

  6. java嵌套循环_java基础之嵌套循环

    一. for循环双层嵌套 首先内层循环属于外层循环循环体的一部分,当循环体执行完以后外层循环才进入第二次循环,此过程中内层循环需要执行符合条件的完整循环.(外循环控制行数,内循环控制每一行的个数) f ...

  7. 判断三角形java代码_java基础编程题之异常处理

    以下是刚开始学习java的基础编程题,每天持续更新java每个知识点的题目,持续练习,不断提高java基本功,培养编程能力.今天的练习的十八题是java的异常处理的使用. 1.检测年龄不能为负数和大于 ...

  8. java大全_Java基础知识大全(一)

    一.基础知识: 1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. java语言是跨平台,jvm不是跨平台的. J ...

  9. java找图最短路径_查找有向图最短路径

    老师有一个题: 使用狄克斯屈拉(Dikjstra)标号算法可得出解: 我用Java来实现了一下这个算法: package test; import java.util.ArrayList; impor ...

最新文章

  1. 201521123013 《Java程序设计》第13周学习总结
  2. Mr.J--Java之static关键字
  3. python3 yield_Python3基础 yield 在函数中的用法示例
  4. java cap是什么_寒冬面试归来总结最新蚂蚁4面(Java):CAP+数据强一致性+分布式等...
  5. 获取公司的maven库 和 idea maven 中Projects Settings的Libraries中正常,但是在Maven Projects中Dependencies一直出现红线的解决办法
  6. 带默认参数值的函数 内联函数
  7. AD7124驱动代码(基于GD32F103 SPI)
  8. java淘宝客开发(一)
  9. Android保存照片到相册
  10. ISO14001认证
  11. 织梦模板(dedecms) 文章页调用 浏览次数(阅读量,访问量)
  12. 【Java】QuickHit游戏
  13. 计算机搜索功能在分区里失灵,DiskGenius搜索已丢失分区(重建分区表)
  14. 推荐系统实践(三)ICF和UCF
  15. mt7620a上tf卡驱动的支持
  16. 聊天室系统测试用例设计及报告
  17. 计量广义差分操作过程_计量学堂 | 计量经济学最基本的31个问题
  18. html 设置图片显示比例,css巧妙设置等比例图片显示
  19. 【广告架构day1】爱奇艺广告系统的演进之路:实践中的一些经验
  20. 非分区表转换为分区表的三种方式

热门文章

  1. poj3258二分法
  2. javascript jquery ajax动态提交多个参数 api测试
  3. android demo 调用,Android中调用C++函数的一个简单Demo
  4. 子集和问题 算法_LeetCode 90 | 经典递归问题,求出所有不重复的子集II
  5. 从mysql数据库读取Blob_读取数据库Blob类型的文本数据
  6. ajax获取session值_cookie和session基础知识学习
  7. mediarecorder直播html5,html5 pc端录制视频+MediaStreamRecorder
  8. cam350 不能打开光绘文件_CAM350使用教程-复制Gerber层
  9. 时下超火的在线教育移动应用UI套件设计素材
  10. 优秀渐变色彩应用PSD分层海报模板,大神都是这样玩渐变的,一看就懂