java找_Java基础之:查找
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基础之:查找相关推荐
- 黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三)
黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三) 1.1 异常概述与异常体系结构 1.2 JVM遇到异常时的默认处理方案 1.3 异常处理 1.4 异常处理之try--catch ...
- java三板斧_JAVA基础学习 三板斧
JAVA基础学习 -1 三板斧 1. 引子 最近因为工作需要,开始学习JAVA,我之前常用的编程语言是C,C#,C++,基本没有用JAVA,JAVA需要从基础开始学习了. JAVA是从C++优化而来: ...
- java 必备_Java基础必备
标签: 写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享给刚刚入门的Java程序员和打算入Java开发这个行当的准新手们,希 ...
- cmd运行java文件_Java基础 前传
微信搜一搜秃然编程 一.关于MS-DOS MS-DOS(微软磁盘操作系统),是美国微软公司提供的磁盘操作系统.在美国微软公司推出Windows1.0.Windows3.0.1995年8月24日推出的操 ...
- java基本命令_java基础篇 快捷键 常见Dos命令等等
(一) 计算机基础介绍 (二) jdk 安装 (三) 环境变量介绍及配置 (四) HelloWorld 实现 一 . 计算机概述 (1) 计算机 计算机(computer)俗称电脑,是一种用于高速计算 ...
- java嵌套循环_java基础之嵌套循环
一. for循环双层嵌套 首先内层循环属于外层循环循环体的一部分,当循环体执行完以后外层循环才进入第二次循环,此过程中内层循环需要执行符合条件的完整循环.(外循环控制行数,内循环控制每一行的个数) f ...
- 判断三角形java代码_java基础编程题之异常处理
以下是刚开始学习java的基础编程题,每天持续更新java每个知识点的题目,持续练习,不断提高java基本功,培养编程能力.今天的练习的十八题是java的异常处理的使用. 1.检测年龄不能为负数和大于 ...
- java大全_Java基础知识大全(一)
一.基础知识: 1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. java语言是跨平台,jvm不是跨平台的. J ...
- java找图最短路径_查找有向图最短路径
老师有一个题: 使用狄克斯屈拉(Dikjstra)标号算法可得出解: 我用Java来实现了一下这个算法: package test; import java.util.ArrayList; impor ...
最新文章
- 201521123013 《Java程序设计》第13周学习总结
- Mr.J--Java之static关键字
- python3 yield_Python3基础 yield 在函数中的用法示例
- java cap是什么_寒冬面试归来总结最新蚂蚁4面(Java):CAP+数据强一致性+分布式等...
- 获取公司的maven库 和 idea maven 中Projects Settings的Libraries中正常,但是在Maven Projects中Dependencies一直出现红线的解决办法
- 带默认参数值的函数 内联函数
- AD7124驱动代码(基于GD32F103 SPI)
- java淘宝客开发(一)
- Android保存照片到相册
- ISO14001认证
- 织梦模板(dedecms) 文章页调用 浏览次数(阅读量,访问量)
- 【Java】QuickHit游戏
- 计算机搜索功能在分区里失灵,DiskGenius搜索已丢失分区(重建分区表)
- 推荐系统实践(三)ICF和UCF
- mt7620a上tf卡驱动的支持
- 聊天室系统测试用例设计及报告
- 计量广义差分操作过程_计量学堂 | 计量经济学最基本的31个问题
- html 设置图片显示比例,css巧妙设置等比例图片显示
- 【广告架构day1】爱奇艺广告系统的演进之路:实践中的一些经验
- 非分区表转换为分区表的三种方式
热门文章
- poj3258二分法
- javascript jquery ajax动态提交多个参数 api测试
- android demo 调用,Android中调用C++函数的一个简单Demo
- 子集和问题 算法_LeetCode 90 | 经典递归问题,求出所有不重复的子集II
- 从mysql数据库读取Blob_读取数据库Blob类型的文本数据
- ajax获取session值_cookie和session基础知识学习
- mediarecorder直播html5,html5 pc端录制视频+MediaStreamRecorder
- cam350 不能打开光绘文件_CAM350使用教程-复制Gerber层
- 时下超火的在线教育移动应用UI套件设计素材
- 优秀渐变色彩应用PSD分层海报模板,大神都是这样玩渐变的,一看就懂