• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
gddzkw
博客园    首页    新随笔    联系   管理    订阅  订阅
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 <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();
      }
  }
}

posted on 2022-03-17 09:16  又菜又爱玩丶  阅读(55)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3