zoukankan      html  css  js  c++  java
  • 稀疏数组的生成与还原以及打印验证

    public class Sparse {
        public static void main(String[] args) {
            // 稀疏数组的目的是为了减少无意义的数组元素
            /*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 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 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 0 0 0
              0 0 0 0 0 0 0 0 0 0 0*/
    
            // 将上述内容转变成稀疏数组(本质是二维数组,我们可以看做一个矩阵如下)
            /* 11 11 2   (几行几列几个有效数字)
            *  1  2  1   (哪一行哪一列的哪个数字)
            *  2  4  2   (哪一行哪一列的哪个数字)
            * */
            int[][] arr = new int[11][11];
            arr[1][2] = 1;
            arr[2][4] = 2;
            // 生成稀疏数组
            int[][] sparseArr = new int[3][3];
            int count = 0;
            // 拼凑sparseArr[0]
            sparseArr[0][0] = arr.length;
            sparseArr[0][1] = arr[0].length;
            for(int i = 0; i < arr.length; i++){
                for(int j = 0; j < arr[0].length; j++){
                    if(arr[i][j] != 0){
                        count += 1; // 记录有多少个有效数字(所以稀疏数组有count + 1行,3列)
                        sparseArr[count][0] = i;
                        sparseArr[count][1] = j;
                        sparseArr[count][2] = arr[i][j];
                    }
                }
            }
            sparseArr[0][2] = count;
            // 打印一下验证对不对
            for(int p = 0; p < 3; p++){
                System.out.println(sparseArr[p][0] + "	" + sparseArr[p][1] + "	" + sparseArr[p][2] + "	");
            }
    
            // -----------------还原稀疏数组 (补0)
            int[][] originArr = new int[sparseArr[0][0]][sparseArr[0][1]];
            for(int i = 1; i <= sparseArr[0][2]; i++){
                originArr[sparseArr[i][0]][sparseArr[i][1]] = sparseArr[i][2];
            }
            // 打印验证
            for(int[] x: originArr){
                for(int y: x){
                    System.out.print(y+"	");
                }
                System.out.println();
            }
        }
    }
    

      

    你的努力有资格到拼天赋的程度吗?
  • 相关阅读:
    Jmeter中的函数和BeanShell
    Jmeter 之关联
    Jmeter 之 参数化
    Jmeter 采样器(Sampler)详细解析
    Jmeter 之 If Controller
    轻松学习redis——第一篇
    如何在linux系统中安装redis
    手把手搭建VMware虚拟机和Linux环境
    线程池(一)
    由浅入深的JVM学习(二)
  • 原文地址:https://www.cnblogs.com/wchjdnh/p/14401319.html
Copyright © 2011-2022 走看看