java中实现稀疏数组的转换


package project1;

public class text1 {
  public static void main(String [] args) {
    /*写一个稀疏数组SpareArray
    * 1.创建一个【】【】数据
    * 2.对这个数组进行遍历
    * 3.求出这个数组的有效值的个数
    * */
    System.out.println("创建数组:");
    int[][] Array = new int[11][11];
    for(int i = 0;i < Array.length;i++) {
      for(int j = 0;j < Array[i].length;j++) {
        System.out.print(Array[i][j] + "\t");
      }
      System.out.println();
    }
      //想数组内输入有效值
      Array[3][4] = 1;
      Array[4][5] = 2;
      Array[5][6] = 3;
      Array[6][7] = 4;
      Array[7][8] = 5;
      Array[8][9] = 6;

      System.out.println("输入有效值后的数组:");
      for(int i = 0;i < Array.length;i++) {
        for(int j = 0;j < Array[i].length;j++) {
          System.out.print(Array[i][j] + "\t");
        }
        System.out.println();
      }
      //对数组的有效值进行统计
      int sum = 0;
      for(int i = 0;i < Array.length;i++) {
        for(int j = 0;j < Array[i].length;j++) {
          if(Array[i][j] != 0) {
            sum++;
          }
        }
      }
      System.out.println("数组的有效值个数=" + sum);
      //得到有效值的个数之后,就应该去创建稀疏数组SpareArray
      /*稀疏数组的特点
      * 1.只有3列
      * 2.第一行储存原数组的行列数和有效值个数
      * 3.剩下所有行存有效值的坐标和值
      * */
      //创建并且遍历稀疏数组
      int[][] SpareArray = new int[sum+1][3];
      for(int i = 0;i < SpareArray.length;i++) {
        for(int j = 0;j           System.out.print(SpareArray[i][j] + "\t");
        }
        System.out.println();
      }
      //将原数组的规模放入稀疏数组中
      SpareArray[0][0] = 11;
      SpareArray[0][1] = 11;
      SpareArray[0][2] = sum;

      //遍历原数组赋值给稀疏数组
      int count = 1;
      for(int i = 0;i         for(int j = 0;j           if(Array[i][j] != 0) {
            SpareArray[count][0] = i;
            SpareArray[count][1] = j;
            SpareArray[count][2] = Array[i][j];
            count++;
          }
        }
      }
      //输出稀疏数组
      System.out.println("输出稀疏数组:");
      for(int i = 0;i < SpareArray.length;i++) {
         for(int j = 0;j            System.out.print(SpareArray[i][j] + "\t");
         }
        System.out.println();
      }

      //稀疏数组转换成原数组
      //读取稀疏数组第一行的数据信息
      System.out.println("稀疏数组转换成原数组:");
      int[][] Array2 = new int[SpareArray[0][0]][SpareArray[0][1]];

      //采用一维数组遍历二维数组,稀疏数组只有3列这个特点
      for(int i = 1;i < SpareArray.length;i++) {
        Array2[SpareArray[i][0]][SpareArray[i][1]] = SpareArray[i][2];
      }
      //遍历

      for(int i = 0;i < Array2.length;i++) {
        for(int j = 0;j < Array2[i].length;j++) {
          System.out.print(Array2[i][j] + "\t");
        }
        System.out.println();
      }
  }
}

C