• Document


    Java数组 :数组、Arrays类、排序

    一.数组

    数组是一个变量,存储相同数据类型的一组数据

    数组的结构和基本要素

    标识符:数组的名称,用于引用不同的数组

    数组元素:向数组中存放的数据

    元素下标:对数组元素进行编号,数组下标从0开始

    元素类型:数组元素的数据类型 

    【注】声明一个数组就是在内存空间划出一串连续的空间

     

    1. 1.    一维数组

    数组的声明及赋值

                       /**第一种直接赋值**/

    int[] score = {89, 79, 76};

    /**第二种new 方式创建**/

    int[] score = new int[]{89, 79, 76};

                        int[] score =new int[4];

    /**第三种动态赋值**/

    Scanner input = new Scanner(System.in);

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

                             score[i]=input.nextInt();

                        }

    【实例 1】:求5人的平均成绩

    Scanner sc=new Scanner(System.in);

    int[] arr=new int[5];

    int sum=0;

    int avg=0;

    System.out.println("请输入5个人的成绩:");

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

            System.out.println("第"+(i+1)+"个人的成绩为:");

            arr[i]=sc.nextInt();

            sum+=arr[i];

    }

    avg=sum/arr.length;

    System.out.println("这个5个人的平均成绩为:"+avg);

    【实例 2】:求5人的平均成绩

    Scanner sc=new Scanner(System.in);

    int[] arr=new int[5];

    int sum=0;

    int avg=0;

    System.out.println("请输入5个人的成绩:");

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

            System.out.println("第"+(i+1)+"个人的成绩为:");

            arr[i]=sc.nextInt();

            sum+=arr[i];

    }

    avg=sum/arr.length;

    System.out.println("这个5个人的平均成绩为:"+avg);

    1. 2.    二维数组

    数组的声明

     

    int [ ][ ] scores;   //定义二维数组

    scores=new int[5][50];  //分配内存空间

    或者

    int [ ][ ] scores = new int[5][50];

    数组的赋值

    /**第一种**/

    int[][] scores= {{ 90, 85, 92, 78, 54 }, { 76, 63,80 }, { 87 } };

    /**第二种**/

    int[][] scores=new int[][]{ { 90, 85, 92, 78, 54 }, { 76, 63,80 }, { 87 }};

    【实例 1】:求3个班级每个班级的总成绩

    int [][] array = new int[][]{{80,66},{70,54,98},{77,59}}; //三个班的成绩

    int total; //保存总成绩

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

            String str = (i+1) + "班";

            total = 0; //每次循环到此都将其归0

            for(int j = 0; j < array[i].length; j++) {

                    total += array[i][j]; //成绩叠加

            }

            System.out.println(str+"总成绩:" + total);

    }

     

     

    二.Arrays

    【注】Arrays类提供了操作数组的一些static方法,其常用方法如下:

    方法名称

    说   明

    boolean equals(array1,array2)

    比较array1和array2两个数组是否相等

    sort(array)

    对数组array的元素进行升序排列

    String toString(array)

    该方法将一个数组array转换成一个字符串

    void fill(array,val)

    把数组array所有元素都赋值为val

    copyOf(array,length)

    把数组array复制成一个长度为length的新数组,返回类型与复制的数组一致

    int binarySearch(array, val)

    查询元素值val在数组array中下标(要求数组中元素已经按升序排列)

    1、复制数组System.arraycopy(),用它复制数组比用for循环复制要快得多。

    2、基本类型数组和对象数组都可以复制,然而,如果复制对象数组,那么只是复制了对象的引用——而不是对象本身的拷贝。这被称作“浅复制”。

    3、数组的比较:

    【注】对于Arrays.equals ,S1的所有元素指向同一个对象,而数组s2包含五个相互独立的对象,然而,数组相等是基于内容的(通过Object.equal()比较),所以结果为true。

    Arrays .equal()

    import java.util.Arrays;

    public class Test{

       public static void main(String[] args){

          String[] s1 = new String[5];

          Arrays.fill(s1,"Hi");

          String[] s2 = {"Hi", "Hi", "Hi", "Hi", "Hi"};

          System.out.println(Arrays.equals(s1, s2));//true

          System.out.println(s1.equals(s2));//false

          System.out.println(s1==s2);//false

       }

    }

    4、数组元素的比较:

    1).Java有两种方式来提供比较功能。第一种是实现java.lang.Comparable接口,此接口中只有compareTo(Object o)一个方法。

    2).实现Comparator接口,重写两个方法compare(Object o1, Object o2)和equals(Object o)两个方法。

    5、基本数据数组无法使用Comparator进行排序。

    6、在使用binarySearch()时必须提供同样地Comparator(使用方法的重载版本)。

    7、数组是效率最高的保持一组对象的方式,它是你的第一选择。而且,如果要保存基本类型,则只能用数组。

     

    . 排序

    1. 1.    冒泡排序

    【实例 1】:冒泡算法

    int[] arr = { 14, 9, 8, 15, 34, 5 };

    int temp=0;

    for (int i = 0; i < arr.length-1; i++) {

    for (int j = 0; j < arr.length-1-i;j++) {

             if (arr[j] >arr[j+1]) {

                    temp = arr[j];

                    arr[j] = arr[j+1];

                    arr[j+1] = temp;

            }

         }

    }

    for (int i : arr) {

         System.out.println(i);

    }

     

    1. 2.    选择排序

    【实例 1】:选择排序算法

    int[] arr = { 14, 9, 8, 90, 34, 5,78 };

    int minIndex;

    int temp;

    for (int i = 0; i < arr.length-1; i++) {

            minIndex=i;

            for (int j = i + 1; j < arr.length; j++) {

                     if (arr[j] < arr[minIndex]) {

                             minIndex =j;

                     }

            }

            if(minIndex!=i){

                     temp=arr[i];

                     arr[i]=arr[minIndex];

                     arr[minIndex]=temp;

            }       

    }

    for (int i : arr) {

            System.out.println(i);

    }

  • 相关阅读:
    Finder 的分栏显示模式宽度调整
    IBAction作用相当于void,NSLog(@"被调用的方法名是%s",__func__);
    Trapping Rain Water
    Binary Tree Preorder Traversal
    Valid Parentheses
    Reverse Words in a String | LeetCode OJ | C++
    Gas Station|leetcode 贪心
    两个字符串“相等”
    Binary Tree Zigzag Level Order Traversal
    Add Binary
  • 原文地址:https://www.cnblogs.com/chenyanlong/p/7818840.html
Copyright © 2020-2023  润新知