java学习笔记29

java数组

稀疏数组

介绍:当一个数组中大部分元素为0,或者为同一值时,可以使用稀疏数组来保存该数组。

稀疏数组的处理方式是:

1.记录数组一共有几行几列,有多少不同值

2.把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模

 

 

package array;

public class Demo08 {
   public static void main(String[] args) {
       //1.创建一个二维数组 11*11 0:没有棋子 1:黑骑   2:白棋
       int[][] array1 = new int[11][11];
       array1[1][2] = 1;
       array1[2][3] = 2;
       //输出原始的数组
       for (int[] ints : array1) {
           for (int anInt : ints) {
               System.out.print(anInt+"\t");
          }
           System.out.println();

      }

       System.out.println("===================");
       //转换为稀疏数组保存
       //获取有效值的个数
       int sum = 0;
       for (int i = 0; i < 11; i++) {
           for (int j = 0; j < 11; j++) {
               if (array1[i][j]!=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 < array1.length; i++) {
           for (int j = 0; j < array1[i].length; j++) {
               if (array1[i][j]!=0){
                   count++;
                   array2[count][0] = i;
                   array2[count][1] = j;
                   array2[count][2] = array1[i][j];
              }

          }

      }
       //输出稀疏数组
       System.out.println("稀疏数组");

       for (int i = 0; i < array2.length; i++) {
           System.out.println(array2[i][0]+"\t"
                   +array2[i][1]+"\t"
                   +array2[i][2]+"\t");

      }
       //还原
       System.out.println("===============");
       System.out.println("还原");
       //1.读取稀疏数组的值
       int[][] array3 = new int[array2[0][0]][array2[0][1]];

       for (int i = 1; i < array2.length; i++) {
           array3[array2[i][0]][array2[i][1]] = array2[i][2];



      }
       System.out.println("输出还原数组");
       for (int[] ints : array3) {
           for (int anInt : ints) {
               System.out.print(anInt+"\t");
          }
           System.out.println();

      }

  }
}
0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0
0 0 0 2 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
00000000000
00000000000
00000000000
00000000000
00000000000
===================
有效值的个数:2
稀疏数组
11112
121
232
===============
还原
输出还原数组
00000000000
00100000000
00020000000
00000000000
00000000000
00000000000
00000000000
00000000000
00000000000
00000000000
00000000000
posted @   新人用户  阅读(175)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示