稀疏数组

2021-03-22 16:25

阅读:580

标签:data   存在   文件   sar   string   fileread   程序   实现   null   

先看一个实际的需求

技术图片

基本介绍

? 1.记录数组一共有几行几列,有几个不同的值

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

稀疏数组的处理方法是:

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

举例说明

技术图片

? 我们可以清楚的看到,数组由原来的6x7,转化为稀疏数组后只有3x8了

应用实例

1.使用稀疏数组,来保留类似前面的二维数组(棋盘、地图等等)
2.把稀疏数组存盘,并且可以从新恢复原来的二维数组数
3.整体思路分析

  • 二维数组换稀疏数组的思路
    1.遍历原始的二维数组,得到有效数据的个数sum
    2.根据sum就可以创建稀疏数组sparseArr int[sum+1][3]
    3.将二维数组的有效数据存入到稀疏数组。
  • 稀疏数组转原始数组的思路
    1.先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组
    2.在读取稀疏数组后几行的数据,并赋给 原始的二维数组即可

代码实现

1.将稀疏数组保存在磁盘上,比如map.data

2.恢复原来的数组时,读取map.data进行恢复。

       //创建原始数组
        int chessArr[][] = new int[11][11];
        /*模拟存储棋盘数据
         *       落子位置:
         *       1:黑子
         *       2:白字
         *       0:没有棋子
         * */
        chessArr[1][2] = 1;
        chessArr[2][3] = 2;
        //展示原始数组
        System.out.println("原始数组:");
        for (int[] row : chessArr) {
            for (int data : row) {
                System.out.printf("%d\t",data);
            }
            System.out.println();
        }

        //统计原始数组的有效数据个数
        int sum = 0;
        for (int i = 0; i  list = new ArrayList();
        //新建一个字符串来保存读取的每一行
        String line = "";
        while((line = br.readLine())!=null){
            list.add(line);
        }
        br.close();
        //新建一个稀疏数组
        int newSparseArr[][] = new int[list.size()][3];
        for (int i = 0; i 

稀疏数组

标签:data   存在   文件   sar   string   fileread   程序   实现   null   

原文地址:https://www.cnblogs.com/dabbie/p/13874987.html


评论


亲,登录后才可以留言!