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数组回顾---线性查找最大值最小值---二分查找的更多相关文章

  1. SDUT 3376 数据结构实验之查找四:二分查找

    数据结构实验之查找四:二分查找 Time Limit: 20MS Memory Limit: 65536KB Submit Statistic Problem Description 在一个给定的无重 ...

  2. SDUT-3376_数据结构实验之查找四:二分查找

    数据结构实验之查找四:二分查找 Time Limit: 30 ms Memory Limit: 65536 KiB Problem Description 在一个给定的无重复元素的递增序列里,查找与给 ...

  3. Java查找算法之二分查找

    二分查找是一种查询效率非常高的查找算法.又称折半查找. 一.算法思想 有序的序列,每次都是以序列的中间位置的数来与待查找的关键字进行比较,每次缩小一半的查找范围,直到匹配成功. 一个情景:将表中间位置 ...

  4. JAVA源码走读(二)二分查找与Arrays类

    给数组赋值:通过fill方法. 对数组排序:通过sort方法,按升序.比较数组:通过equals方法比较数组中元素值是否相等.查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找 ...

  5. Java实现四大基本排序算法和二分查找

    Java 基本排序算法 二分查找法 二分查找也称为折半查找,是指当每次查询时,将数据分为前后两部分,再用中值和待搜索的值进行比较,如果搜索的值大于中值,则使用同样的方式(二分法)向后搜索,反之则向前搜 ...

  6. java数据结构学习(一)之二分查找

      二分查找法与我们在孩童时期玩过的猜数的游戏一样,这个游戏里一个朋友会让你猜他正想的一个1至100的数,当你猜了一个数后,他会告诉你三种选择的一个:你猜的比她想的大,或小,或猜中了.为了能用最少的次 ...

  7. C语言数组之冒泡排序+折半查找法(二分查找)

    冒泡排序算法 将相邻的元素进行两两比较,大的向后"冒", 小的向前"赶". 口诀: N个数字来排队,两两比较小靠前 外层循环N-1(控制需要比较的轮数). 内层 ...

  8. C++数组或vector求最大值最小值

    可以用max_element()及min_element()函数,二者返回的都是迭代器或指针. 头文件:#include<algorithm> 1.求数组的最大值或最小值 1)vector ...

  9. 数据结构与算法之PHP查找算法(二分查找)

    二分查找又称折半查找,只对有序的数组有效. 优点是比较次数少,查找速度快,平均性能好,占用系统内存较少: 缺点是要求待查表为有序表,且插入删除困难. 因此,折半查找方法适用于不经常变动而查找频繁的有序 ...

随机推荐

  1. 常用的几种OCR方法/组件小结(C#)

    数字.英文识别比较容易.中文识别主要存在两个问题:其一,有可能误识别.其二.需要随带几十兆的识别库(甚至更大).   适合C#编程引用的中文ocr技术,查到以下两种:   1.使用开源的Tessera ...

  2. Canvas 绘制矩形,圆形,不规则图形(线条),渐变等图像效果

    绘制矩形: getContext("2d") 对象是内建的 HTML5 对象,拥有多种绘制路径.矩形.圆形.字符以及添加图像的方法. fillStyle 方法将其染成红色,fill ...

  3. [转]wxParse-微信小程序富文本解析组件

    本文转自:https://github.com/icindy/wxParse 基本使用方法 Copy文件夹wxParse - wxParse/ -wxParse.js(必须存在) -html2json ...

  4. 关于键盘KeyDown事件

    if (e.KeyValue==13) //如果键盘的值等于13 这里面的13是enter键 textBox2.Focus(); //焦点就跑到textbox2上面

  5. JavaScript内置对象与原生对象【转】

    原文:https://segmentfault.com/a/1190000002634958 内置对象与原生对象 内置(Build-in)对象与原生(Naitve)对象的区别在于:前者总是在引擎初始化 ...

  6. JRE“瘦身”&桌面程序集成JRE

    项目是一个桌面程序,程序文件不大,但运行jre有198 MB,因此需要"瘦身". jre包含bin.lib两部分,分别为93.6 MB.104 MB. 1.精简bin 运行桌面程序 ...

  7. java核心技术-多线程基础

    进程.线程 ​ 进程(Process) 是程序的运行实例.例如,一个运行的 Eclipse 就是一个进程.进程是程序向操作系统申请资源(如内存空间和文件句柄)的基本单位.线程(Thread)是进程中可 ...

  8. Hunger Snake 2

  9. js历史记录

    1. history 是什么? window上的一个对象,由来存储浏览器访问过的历史 2. 用途: 可以动态跳转任意一个已在历史记录中的地址 3..history方法: 1.forward() : 向 ...

  10. 洛谷 P3390 【模板】矩阵快速幂

    这题的确是个模板 但也要提到有关矩乘的内容: 首先什么是矩阵? 给一个线性变换 F(x)   (她可能就是个函数,定义域为向量集) 她可以把一个N维向量变成M维 那么显然x的每一维都可能影响着F(x) ...