7.稀疏数组

1.稀疏数组

int[][] a = new int[5][5];//声明创建普通数组
       //填写几个非0数据
       a[0][2] = 1;
       a[2][1] = 2;

       int sum = 0;//记录有几个非0数据
       //打印普通数组
       System.out.println("普通数组:");
       for (int i = 0; i < a.length; i++) {
           for (int j = 0; j < a[i].length; j++) {
               System.out.print(a[i][j] + " ");
               if (a[i][j] != 0) {
                   sum++;
              }
          }
           System.out.println();
      }
       System.out.println("稀疏数组:");
       int[][] b = new int[sum + 1][3];//声明创建稀疏数组
       //记录普通数组的行,列,非0数据有几个
       b[0][0] = 5;
       b[0][1] = 5;
       b[0][2] = sum;

       int count = 0;//记录非0数据的横坐标的位置
       //稀疏数组填充信息
       for (int i = 0; i < a.length; i++) {
           for (int j = 0; j < a[i].length; j++) {
               if (a[i][j] != 0) {
                   count++;
                   b[count][0] = i;//非0数据的横坐标
                   b[count][1] = j;//非0数据的纵坐标
                   b[count][2] = a[i][j];//非0数据的具体值
              }
          }
      }
       //打印稀疏数组
       for (int i = 0; i < b.length; i++) {
           for (int j = 0; j < b[i].length; j++) {
               System.out.print(b[i][j] + " ");
          }
           System.out.println();
      }

       System.out.println("通过稀疏数组还原普通数组:");
       int[][] c = new int[b[0][0]][b[0][1]];//声明创建普通数组
       //还原在普通数组的位置
       for (int i = 1; i < b.length; i++) {
           c[b[i][0]][b[i][1]] = b[i][2];
      }
       //打印普通数组
       for (int i = 0; i < c.length; i++) {
           for (int j = 0; j < c[i].length; j++) {
               System.out.print(c[i][j] + " ");
          }
           System.out.println();
      }

 

 

posted @ 2022-03-23 20:45  阳光下的承诺  阅读(137)  评论(0)    收藏  举报