一些java基础的查漏补缺

Arrays类

数组的工具类。
包含用于操作数组的各种方法,比如排序和搜索。

就是平时常用的那些跟数组有关系方法

Arrays类总的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而不用使用对象来调用(是不用,不是不能)。

常用方法:
给数组赋值:fill
数组升序:sort
比较数组:equals
查找数组元素:binarySearch方法能对排序好的数组进行二分查找法操作。

冒泡排序

总共有八大排序,冒泡排序是最为出名的。
两层循环,外层冒泡轮数,里层依次比较。

package com.company;

import java.util.Arrays;

public class Main {
    //冒泡排序
    //比较数组中相邻的两个元素,如何第一个数比第二个数大,就交换位置,每一次比较都会产生一个最大或者最小的数字,下一轮则可以少排序依次,依次循环直到结束
    public static void main(String[] args) {
        int[] a = {1,3,6,2,77,22,8,3,4};
        int[] sort = sort(a);
        System.out.println(Arrays.toString(sort));
    }
    public static int[] sort(int [] array){
        //临时变量
        int temp = 0;

        //外层循环,判断走多少次
        for (int i = 0;i < array.length-1; i++){
            //十个数只需要比较9次,所以外层循环次数-1
            //内层循环,比较判断两个数,如果第一个比第二个大就交换位置
            for(int j = 0;j < array.length-1-i;j++){
                if(array[j+1]>array[j]){
                    temp = array[j];
                    array[j]=array[j+1];
                    array[j+1]=temp;
                }
            }
        }
        return array;
    }
}

稀疏数组

当二维数组中很多值是默认值0,因此记录了很多没有意义的数据。
解决:稀疏数组

当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组。
稀疏数组的处理方式是:记录数组有几行几列,有多个不同值
把具体的不同值的原色和行列及值记录咋一个小规模的数组中,从而缩小程序的规模

共几行 共几列 几个不同值
第几行 第几列 不同值
package com.company;

public class Main {
    public static void main(String[] args) {
        //1.创建一个二维数组 11*11 0:没有棋子 1:黑棋 2:白棋
        int[][] array1 = new int[11][11];
        array1[1][2] = 1;
        array1[2][3] = 2;
        //输出原始的数组
        System.out.println("输出原始数组");

        for (int[] ints : array1){
            for (int anInt :ints){
                System.out.print(anInt+"\t");
            }
            System.out.println();
        }

        //转换为稀疏数组来保存
        //获取有效值个数
        int sum = 0;
        for (int i=0; i<11;i++){
            for (int j=0;j<11;j++){
                if(array1[i][j]!=0){
                    sum++;
                }
            }
        }
        System.out.println("有效值的个数:"+sum);

        //2.创建一个稀疏数组的数组
        int[][] array2=new int [sum+1][3];
        array2[0][0] = 11;
        array2[0][1] = 11;
        array2[0][2] = sum;

        //遍历二维数组,将非零的值,存放在稀疏数组中
        int count = 0;
        for(int i=0;i< array1.length;i++){
            for(int j=0;j< array1[i].length;j++){
                if(array1[i][j]!=0){
                    count++;
                    array2[count][0] = i;
                    array2[count][1] = j;
                    array2[count][2] = array1[i][j];
                }
            }
        }

        //输出稀疏数组
        System.out.println("稀疏数组:");

        for (int i =0;i< array2.length;i++){
            System.out.println(array2[i][0]+"\t"
                    +array2[i][1]+"\t"
                    +array2[i][2]+"\t");
        }

        System.out.println("稀疏数组还原:");
        int[][] array3 = new int[array2[0][0]][array2[0][1]];
        for (int i = 1; i < array2.length; i++) {
            array3[array2[i][0]][array2[i][1]] = array2[i][2];
        }
        for (int[] ints : array3){
            for (int anInt :ints){
                System.out.print(anInt+"\t");
            }
            System.out.println();
        }
    }
}
posted @ 2022-09-15 16:56  饺子少蘸醋  阅读(21)  评论(0编辑  收藏  举报