zoukankan      html  css  js  c++  java
  • 稀疏数组

    用途

    主要用于储存有效值较少的数组

    创建方法

    1. 获取有效值(不为零)个数
    2. 创建稀疏数组
    3. 遍历数组,将有效值(非零值)存放到稀疏数组中

    还原方法

    1. 创建数组
    2. 还原有效值

    代码

    public class 稀疏数组 {
        public static void main(String[] args) {
            //1.创建二维数组 11*11  0:没有棋子  1:黑棋    2:白棋
            int[][] arrays = new int[11][11];
            //2.赋值
            arrays[1][2] = 1;
            arrays[2][3] = 2;
            arrays[4][1] = 1;
            arrays[1][3] = 1;
            //3.查看
            print2Array(arrays);
    
            System.out.println("==========转换===========");
            //转为稀疏数组
            //1.获取有效值(不为零)个数
            int sum = 0;
            for (int[] array : arrays) {
                for (int i : array) {
                    if (i!=0){
                        sum++;
                    }
                }
            }
            System.out.println("有效值个数为:"+sum);
    
            //2.创建稀疏数组
            int[][] array2 = new int[sum+1][3];//行为有效值加一,固定的三列
            array2[0][0] = arrays.length;
            array2[0][1] = arrays[0].length;
            array2[0][2] = sum;
            //print2Array(array2);
    
            //3.遍历数组,将有效值(非零值)存放到稀疏数组中
            int count = 0;
            for (int i = 0; i < arrays.length; i++) {
                for (int j = 0; j < arrays[0].length; j++) {
                    if (arrays[i][j]!=0){
                        count++;
                        array2[count][0] = i;//行
                        array2[count][1] = j;//列
                        array2[count][2] = arrays[i][j];//值
                    }
                }
            }
            System.out.println("稀疏数组:");
            for (int i = 0; i < array2.length; i++) {
                System.out.println(array2[i][0]+"	"+array2[i][1]+"	"+array2[i][2]+"	");
            }
    
            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];
            }
    
            //3.打印
            print2Array(array3);
    
    
    
        }
    
        //打印二维数组
        private static void print2Array(int[][] arrays) {
            for (int[] array : arrays) {
                for (int i : array) {
                    System.out.print(i+" ");
                }
                System.out.println();
            }
        }
    }
    
  • 相关阅读:
    如何创建支持Eclipse IDE的Maven项目
    使用Nexus搭建Maven私服
    Maven找不到java编译器的问题
    关于java -version版本问题
    win7右下角声音图标不见的解决方法
    如何用Maven创建一个普通Java项目
    如何手动把jar包添加进Maven本地仓库
    Maven是如何工作的
    Maven远程仓库
    canvas+js实现时钟效果图
  • 原文地址:https://www.cnblogs.com/shimmernight/p/13441731.html
Copyright © 2011-2022 走看看