栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

二维数组与稀疏数组的相互转化(java)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

二维数组与稀疏数组的相互转化(java)

package sparsearray;



public class SparseArrToTwoArray {
    public static void main(String[] args) {
        //创建原始二维数组11*11
        int line = 11;
        int list = 11;
        int cherrArr[][] = new int[line][list];
        //添加两个数据
        cherrArr[1][2] = 5;
        cherrArr[3][4] = 6;
        System.out.println(cherrArr.length);
        //遍历原始数组
        System.out.println("原始的二维数组:");
        for (int[] row : cherrArr) {
            for (int data : row) {
                System.out.printf("t" + data);
            }
            System.out.println();
        }
        //遍历原始数组找到原始数据的个数
        int sum = 0;//用于记录多少个原始数据
        for (int i = 0; i < cherrArr.length; i++) {
            for (int j = 0; j < cherrArr[i].length; j++) {
                if (cherrArr[i][j] != 0) {
                    sum++;
                }
            }
        }
        System.out.println("一共有:" + sum + "个数据");
        //    根据sum创建稀疏数组sparseArr
        int[][] sparseArr = new int[sum + 1][3];
        //遍历稀疏数组
        System.out.println("原始的稀疏数组:");
        for (int[] sparserow : sparseArr) {
            for (int sparsedata : sparserow) {
                System.out.printf("t" + sparsedata);
            }
            System.out.println();
        }
        //遍历原始数组并将原始数组其行列及其值取出并放入原始稀疏数组中
        //第一行数据
        sparseArr[0][0] = line;
        sparseArr[0][1] = list;
        sparseArr[0][2] = sum;
        int s = 0;//用于记录第几个非零数据
        for (int i = 0; i < cherrArr.length; i++) {
            for (int j = 0; j < cherrArr[i].length; j++) {
                if (cherrArr[i][j] != 0) {
                    s++;
                    sparseArr[s][0] = i;
                    sparseArr[s][1] = j;
                    sparseArr[s][2] = cherrArr[i][j];
                }
            }
        }
        //最终的稀疏数组
        System.out.println("最终的稀疏数组:");
        for (int[] sparserow1 : sparseArr) {
            for (int sparsedata1 : sparserow1) {
                System.out.printf("t" + sparsedata1);
            }
            System.out.println();
        }
        
//    读取稀疏数组第一行数据根据第一行数据初始化
        int line2 = sparseArr[0][0];
        int list2 = sparseArr[0][1];
        int[][] cherrArr2 = new int[line2][list2];
//        打印初始数组
        System.out.println("还原的初始化数组:");
        for (int[] row : cherrArr2) {
            for (int data : row) {
                System.out.print("t" + data);
            }
            System.out.println();
        }
//        将稀疏数组中数据取出并插入到初始数组中
        for (int i = 1; i < sparseArr.length; i++) {
            cherrArr2[sparseArr[i][0]][sparseArr[i][1]] = sparseArr[i][2];
        }
        //    遍历还原后的数组
        System.out.println("最终还原后的原始数组:");
        for (int[] row : cherrArr2) {
            for (int data : row) {
                System.out.print("t" + data);
            }
            System.out.println();
        }
    }

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/866683.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号