首页 > 编程语言 > 详细

稀疏数组

时间:2021-04-07 19:53:11      阅读:16      评论:0      收藏:0      [点我收藏+]

稀疏数组

稀疏数组实际上就是一个压缩后的二维数组,且列数固定为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();
      }
?
  }

 

稀疏数组

原文:https://www.cnblogs.com/dbin1126/p/14628690.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!