openshell 的个人博客

一天很长,但十年很短。

Open Source, Open Mind,
Open Sight, Open Future!
  menu
110 文章
5051 浏览
0 当前访客
ღゝ◡╹)ノ❤️

【算法】稀疏数组

稀疏数组

创建二维数组

创建一个11*11的二维数组来表示期盼,设1为白子,2为黑子,0为无子。

int[][] arr = new int[11][11];
        arr[1][2] = 1;
        arr[2][3] = 2;
        System.out.println("输出原始的二维数组:");
        for (int[] item : arr) {
            for (int i : item) {
                System.out.print(i + "\t");
            }
            System.out.println();
        }

转换为稀疏数组

稀疏数组能够有效压缩二维数组,是一种典型的以时间换空间的数据结构。
稀疏数组的不固定,固定为三列,三列分别存储:行、列、值。
需要特别说明的是,稀疏数组的第一行存储的分别是,对应数组的总行数、总列数、总共有多少值。

 //获取二维数组中值的个数
        int valueCount = 0;
        for (int[] item : arr) {
            for (int i : item) {
                if (i > 0) {
                    valueCount++;
                }
            }
        }
        int[][] sparseArray = new int[valueCount + 1][3];
        sparseArray[0][0] = 11;
        sparseArray[0][1] = 11;
        sparseArray[0][2] = valueCount;
        int count=0;
        for (int i=0;i<arr.length;i++){
            for (int j=0;j<arr[i].length;j++){
                if (arr[i][j]>0){
                    count++;
                    sparseArray[count][0] = i;
                    sparseArray[count][1] = j;
                    sparseArray[count][2] = arr[i][j];
                }

            }
        }
        System.out.println("输出压缩稀疏数组:");
        for(int[] item:sparseArray){
            for (int i:item){
                System.out.print(i+"\t");
            }
            System.out.println();
        }

标题:【算法】稀疏数组
作者:openshell
地址:http://solo.caiqz.cn/articles/2019/11/28/1574955370648.html