稀疏数组

稀疏数组

稀疏数组实际上就是一个压缩后的二维数组,且列数固定为3列。原二维数组中有效数组的个数为sum,则稀疏数据的行数即为sum+1。稀疏数据的第一行第一列记录原二维数组的总行数,第二列记录原二维数组的总列数,第三列记录原二维数组中有效数据的总数量。以后每一行的三列依次记录每一个有效数据所在原二维数组的行数、列数和具体的值。

 

public static void main(String[] args) {
       //1、创建一个二位数组 11*11 0:代表没有棋子 1:代表黑子 2:代表白子
       int[][] array = new int[11][11];
       array[1][2] = 1;
       array[2][3] = 2;
       for (int[] ints : array) {
           for (int anInt : ints) {
               System.out.print(anInt + "\t");
          }
           System.out.println();
      }

       System.out.println("==================");
       System.out.println("转化为稀疏数组");
       // 转化为稀疏数组保存
       // 获取有效数值个数
       int sum = 0;
       for (int[] ints : array) {
           for (int anInt : ints) {
               if (anInt != 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 < array.length; i++) {
           int[] arr = array[i];
           for (int j = 0; j < arr.length; j++) {
               if (arr[j] != 0) {
                   count++;
                   array2[count][0] = i;
                   array2[count][1] = j;
                   array2[count][2] = arr[j];
              }

          }
      }

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

       System.out.println("==================");
       System.out.println("还原");

       // 1、读取稀疏数组
       int[][] array3 = new int[array2[0][0]][array2[0][1]];
       // 2、给其中的元素还原值
       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 @ 2021-04-07 17:19  木木彡坚持  阅读(467)  评论(0)    收藏  举报