需要再次复习!!稀疏数组||数据结构

2021-09-20  本文已影响0人  哈迪斯Java

稀疏数组:也就是说当一个数组当中的大部分元素为0的话,或者说是同一值的数组时候,就可以使用稀疏数组来保存该数组。

@数组是从第0个开始的,和习惯用法是不一样的。


image.png

记录方式为:
~首先记录数组一共是几行几列,有多少个不同的值
~其次就是把具有不同值的元素的位置(行与列)记录下来。目的即为缩小程序的规模。


package Array;

public class ArrayDemon8 {
    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){
                //ints,anInt是声明的两个变量,相当于i,j
                System.out.print(anInt+"\t");
            }
            System.out.println();
        }
        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[1][0]+"\t"
            +array2[i][0]+"\t"
            +array2[i][0]+"\t");
        }




    }

}

上一篇 下一篇

猜你喜欢

热点阅读