java数组回顾---线性查找最大值最小值---二分查找
import java.util.Scanner;
public class ArrayDemo {
public static void main(String []args) {
//-------------------------------------------------------
//线性查找
int [] num ={10,20,30,40,50};
Scanner input1 = new Scanner(System.in);
System.out.println("请输入要查找的数(10,20,30,40,50):");
int inp = input1.nextInt();
input1.close();
for(int i = 0;i<num.length;i++) {
if (inp == num[i]) {
System.out.println("所查数下标为:"+i);
}else {
if(i==num.length-1 ) {
System.out.println("-1");
}
}
}
//-------------------------------------------------------
//查找数组最大值,最小值
int[] maxMin = new int[] {20,60,80,70,30,10,50};
System.out.println("数组为(20,60,80,70,30,10,50),求最大值和最小值:");
//方法一(冒泡排序):
int temp=0;
for(int i = 0;i<maxMin.length-1;i++) {
if(maxMin[i]>maxMin[i+1]) {
temp = maxMin[i+1];
maxMin[i+1] = maxMin[i];
maxMin[i] = temp;
}
}
System.out.println("最大值为:"+maxMin[6]);
for(int i = 0;i<maxMin.length-1;i++) {
if(maxMin[i]<maxMin[i+1]) {
temp = maxMin[i+1];
maxMin[i+1] = maxMin[i];
maxMin[i] = temp;
}
}
//方法二:
int max = maxMin[0];
for(int i = 1;i<maxMin.length-1;i++) {
if(maxMin[i]>max) {
max = maxMin[i];
}
}
System.out.println("最大值为:"+max);
int min = maxMin[0];
for(int i = 1;i<maxMin.length-1;i++) {
if(maxMin[i]<min) {
min = maxMin[i];
}
}
System.out.println("最小值为:"+min);
//--------------------------------------------------------
//二分查找
int[] BinarySearch = new int[] {10,20,30,40,70,80,90,100};
Scanner input2 = new Scanner(System.in);
System.out.println("请输入要查找的数(10,20,30,40,70,80,90,100):");
input2.close();
int start;
int end;
int middle;
int index = -1;//保存找到书所在下标
start = 0;//保存起始下标
end = BinarySearch.length-1;//保存终点下标
while(start <=end) {
middle = (start+end)/2;//找到中间元素 对应的值
if(num2 == BinarySearch[middle]) {
index = middle+1;
break;
}
if(num2 > BinarySearch[middle]) {//如果是大于中间的数
start = middle+1;//起始下标改为中间数的下一个数
}
if(num2 < BinarySearch[middle]){
end = middle-1;//终点下标改为中间数的上一个数
}
}
if(index == -1){
System.out.println("没查到");
}
else{
System.out.println("查到了,位置在第"+index+"位");
}
}
}
java数组回顾---线性查找最大值最小值---二分查找的更多相关文章
- SDUT 3376 数据结构实验之查找四:二分查找
数据结构实验之查找四:二分查找 Time Limit: 20MS Memory Limit: 65536KB Submit Statistic Problem Description 在一个给定的无重 ...
- SDUT-3376_数据结构实验之查找四:二分查找
数据结构实验之查找四:二分查找 Time Limit: 30 ms Memory Limit: 65536 KiB Problem Description 在一个给定的无重复元素的递增序列里,查找与给 ...
- Java查找算法之二分查找
二分查找是一种查询效率非常高的查找算法.又称折半查找. 一.算法思想 有序的序列,每次都是以序列的中间位置的数来与待查找的关键字进行比较,每次缩小一半的查找范围,直到匹配成功. 一个情景:将表中间位置 ...
- JAVA源码走读(二)二分查找与Arrays类
给数组赋值:通过fill方法. 对数组排序:通过sort方法,按升序.比较数组:通过equals方法比较数组中元素值是否相等.查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找 ...
- Java实现四大基本排序算法和二分查找
Java 基本排序算法 二分查找法 二分查找也称为折半查找,是指当每次查询时,将数据分为前后两部分,再用中值和待搜索的值进行比较,如果搜索的值大于中值,则使用同样的方式(二分法)向后搜索,反之则向前搜 ...
- java数据结构学习(一)之二分查找
二分查找法与我们在孩童时期玩过的猜数的游戏一样,这个游戏里一个朋友会让你猜他正想的一个1至100的数,当你猜了一个数后,他会告诉你三种选择的一个:你猜的比她想的大,或小,或猜中了.为了能用最少的次 ...
- C语言数组之冒泡排序+折半查找法(二分查找)
冒泡排序算法 将相邻的元素进行两两比较,大的向后"冒", 小的向前"赶". 口诀: N个数字来排队,两两比较小靠前 外层循环N-1(控制需要比较的轮数). 内层 ...
- C++数组或vector求最大值最小值
可以用max_element()及min_element()函数,二者返回的都是迭代器或指针. 头文件:#include<algorithm> 1.求数组的最大值或最小值 1)vector ...
- 数据结构与算法之PHP查找算法(二分查找)
二分查找又称折半查找,只对有序的数组有效. 优点是比较次数少,查找速度快,平均性能好,占用系统内存较少: 缺点是要求待查表为有序表,且插入删除困难. 因此,折半查找方法适用于不经常变动而查找频繁的有序 ...
随机推荐
- android drawable size
================
- [javaSE] 集合框架(迭代器)
当我们创建一个集合以后,可以直接使用system.out.println()来打印这个集合,但是,我们需要可以对每个元素进行操作,所以,这里需要使用迭代器来遍历集合 迭代器其实就是集合取出元素的方式 ...
- 撩课-Python-每天5道面试题-第1天
一. 尽可能详细的描述出一个应用软件, 比如QQ, 在计算机中运行时涉及的软硬件, 以及说明我们编程的侧重点? 电脑开机, 从硬盘中(外部存储设备)加载操作系统(系统软件)到内存(内部存储设备), 并 ...
- Java面试宝典之----java基础(含答案)
一 JAVA基础 1. JAVA中的几种基本数据类型是什么,各自占用多少字节. int 32bit short 16bitlong 64bit byte 8b ...
- Linux之Ubuntu基本命令提炼,分条列出
Ubuntu系统的root用户有时没有安装,我们可以先输入一个root,他会有一个提示命令,然后我们输入该命令,进行安装,安装完后,使用sudopasswd 命令设置密码,设置完后的密码就是root用 ...
- win下gosublime配置ctag
ctags(Generate tag files for source code)是vim下方便代码阅读的工具.尽管ctags也可以支持其它编辑器,但是它正式支持的只有VIM.并且VIM中已经默认安装 ...
- Java关闭钩子的应用 - Shutdown Hook
背景 在开发中,遇到这种情况,多个线程同时工作,突然一个线程遇到了fetal的错误,需要立即终止程序,等人工排查解决了问题之后重新启动.但是这样会有一个问题,程序终止时,其他线程可能正在进行重要操作, ...
- PhpStorm 自定义快捷键
PhpStorm 两个重要快捷键 1.CTRL+SHIFT+A 用于恢复隐藏项 2.文件之间的快速跳转 CTRL+SHIFT+N 3.自定义快捷键 第一步:打开左上角file-setting 第二步: ...
- Bzoj3277:串
题面 传送门 Sol 广义\(sam\) 每个\(sam\)的状态开\(set\)记录属于哪些串 \(parent\)树上启发式合并\(set\) 然后每个串就在上面走,通过不停地跳\(parent\ ...
- JS实现省市联动效果
实现的效果为:当选择一个省的时候,会自动出现该省下的市级 效果图如下: <body> <div> <!--界面展示--> <span>省份:</s ...