欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java稀疏数组实现

程序员文章站 2022-07-10 17:38:22
稀疏数组原理介绍1.稀疏数组是将数据量较大且有很多重复元素的情况下,将大的数组转换为更简单占空间更小的数组2.可用于下五子棋中途要去拉粑粑,来先记录下这一局棋子的分布假设有如下棋局0为空棋盘 1为黑棋 2为白棋0 0 0 0 0 0 0 0 00 0 1 0 0 0 0 0 00 0 0 2 0 0 0 0 00 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 00...

稀疏数组原理介绍

1.稀疏数组是将数据量较大且有很多重复元素的情况下,将大的数组转换为更简单占空间更小的数组
2.可用于下五子棋中途要去拉粑粑,来先记录下这一局棋子的分布

假设有如下棋局
0为空棋盘 1为黑棋 2为白棋
0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0
0 0 0 2 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0

使用稀疏数组可将此局转化为:
行 列 值
9 9 2
1 2 1
2 3 2
也可实现相互转换。

代码演示

    public static void main(String[] args) {
        //11行11列格子   1 为黑棋  2为白棋
        int[][] array1=new int[11][11];
        array1[1][2] = 1;
        array1[2][3] = 2;
        //打印原始的数组
        for (int[] ints : array1) {
            for (int anInt : ints) {
                System.out.print(anInt+" ");
            }
            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);
        int[][] array3=new int[sum+1][3];
        array3[0][0]=11;
        array3[0][1]=11;
        array3[0][2]=sum;
        //转换为稀疏数组保存
        int x=0;
        for (int i = 0; i < array3[0][0]; i++) {
            for (int j = 0; j < array3[0][1]; j++) {
                if (array1[i][j]!=0){
                    x++;
                    array3[x][0]=i;
                    array3[x][1]=j;
                    array3[x][2]=array1[i][j];
                }
            }
        }
        for (int[] ints : array3) {
            for (int anInt : ints) {
                System.out.print(anInt+" ");
            }
            System.out.println();
        }
        System.out.println("=====================================");
        //稀疏数组转换为原始数组
        int[][] array4=new int[array3[0][0]][array3[0][1]];
        for (int i = 1; i < array3.length; i++) {
            array4[array3[i][0]][array3[i][1]]=array3[i][2];
        }
        for (int[] ints : array4) {
            for (int anInt : ints) {
                System.out.print(anInt+" ");
            }
            System.out.println();
        }
    }

输出结果

java稀疏数组实现

本文地址:https://blog.csdn.net/baipiaoge/article/details/109850296

相关标签: java