java中实现稀疏数组的转换

大标 2022年3月17日09:48:20
评论
27

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 <SpareArray[i].length;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 <Array.length;i++) {
        for(int j = 0;j <Array[i].length;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 <SpareArray[i].length;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();
      }
  }
}

  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
大标
  • 本文由 发表于 2022年3月17日09:48:20
  • 转载请务必保留本文链接:https://www.tanhuibiao.com/script/java/5478.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: