zoukankan      html  css  js  c++  java
  • 稀疏数组(实例)

    需求:

     思路分析:

     代码实现:

    package com.data;
    
    /** 稀疏数组和队列
     * @author nidegui
     * @create 2019-10-21 17:07
     */
    public class day1 {
    
        public static void main(String[] args) {
            //先创建一个原始的二位数组 11*11的大小
            // 0:表示没有棋子,1:表示 黑子 2:表示白子
    
            int cheerArr1[][]=new int[11][11];
            cheerArr1[1][2]=1;
            cheerArr1[2][3]=2;
            //输出原始二维数组
            for (int[] row:cheerArr1){
                for (int data:row){
                    System.out.printf("%d	",data);
                }
                System.out.println();
            }
    
        }
    
    }
    

     

     二维数组转稀疏数组

    package com.data;
    
    /** 稀疏数组和队列
     * @author nidegui
     * @create 2019-10-21 17:07
     */
    public class day1 {
    
        public static void main(String[] args) {
            //先创建一个原始的二位数组 11*11的大小
            // 0:表示没有棋子,1:表示 黑子 2:表示白子
    
            int cheerArr1[][]=new int[11][11];
            cheerArr1[1][2]=1;
            cheerArr1[2][3]=2;
            //输出原始二维数组
            System.out.println("原始二位数组");
            for (int[] row:cheerArr1){
                for (int data:row){
                    System.out.printf("%d	",data);
                }
                System.out.println();
            }
    
            //二维数组转稀疏数组
            //1.遍历原始二位数组,得到有效数据的个数sum 2. 根据sum就可以创建稀疏数组spareArr[sum+1][3] 3.将二维数组数据存入稀疏数组
            int sum=0;
            for(int i=0;i<11;i++){
                for(int j=0;j<11;j++){
                    if(cheerArr1[i][j]!=0){
                        sum++;
                    }
                }
            }
            System.out.println("sum:"+sum);
    
            //创建对应的稀疏数组
            int sparseArr[][]=new int[sum+1][3];
            sparseArr[0][0]=11;
            sparseArr[0][1]=11;
            sparseArr[0][2]=sum;
    
            //遍历二维数组,将数据放入稀疏数组
            int count=0; //用于遍历第几个非0数据
            for (int i=0;i<11;i++){
                for (int j=0;j<11;j++){
                    if (cheerArr1[i][j]!=0){
                        count++;
                        sparseArr[count][0]=i;
                        sparseArr[count][1]=j;
                        sparseArr[count][2]=cheerArr1[i][j];
    
                    }
                }
            }
            //输出稀疏数组的形式
            System.out.println();
            System.out.println("稀疏数组");
            for (int i=0;i<sparseArr.length;i++){
                System.out.printf("%d	%d	%d	
    ",sparseArr[i][0],sparseArr[i][1],sparseArr[i][2]);
            }
            System.out.println();
        }
    
    }
    

      

     稀疏数组转二维数组

    package com.data;
    
    /** 稀疏数组和队列
     * @author nidegui
     * @create 2019-10-21 17:07
     */
    public class day1 {
    
        public static void main(String[] args) {
            //先创建一个原始的二位数组 11*11的大小
            // 0:表示没有棋子,1:表示 黑子 2:表示白子
    
            int cheerArr1[][]=new int[11][11];
            cheerArr1[1][2]=1;
            cheerArr1[2][3]=2;
            //输出原始二维数组
            System.out.println("原始二位数组");
            for (int[] row:cheerArr1){
                for (int data:row){
                    System.out.printf("%d	",data);
                }
                System.out.println();
            }
    
            //二维数组转稀疏数组
            //1.遍历原始二位数组,得到有效数据的个数sum 2. 根据sum就可以创建稀疏数组spareArr[sum+1][3] 3.将二维数组数据存入稀疏数组
            int sum=0;
            for(int i=0;i<11;i++){
                for(int j=0;j<11;j++){
                    if(cheerArr1[i][j]!=0){
                        sum++;
                    }
                }
            }
            System.out.println("sum:"+sum);
    
            //创建对应的稀疏数组
            int sparseArr[][]=new int[sum+1][3];
            sparseArr[0][0]=11;
            sparseArr[0][1]=11;
            sparseArr[0][2]=sum;
    
            //遍历二维数组,将数据放入稀疏数组
            int count=0; //用于遍历第几个非0数据
            for (int i=0;i<11;i++){
                for (int j=0;j<11;j++){
                    if (cheerArr1[i][j]!=0){
                        count++;
                        sparseArr[count][0]=i;
                        sparseArr[count][1]=j;
                        sparseArr[count][2]=cheerArr1[i][j];
    
                    }
                }
            }
            //输出稀疏数组的形式
            System.out.println();
            System.out.println("稀疏数组");
            for (int i=0;i<sparseArr.length;i++){
                System.out.printf("%d	%d	%d	
    ",sparseArr[i][0],sparseArr[i][1],sparseArr[i][2]);
            }
            System.out.println();
    
            //稀疏数组转二维数组
            // 1.先读取稀疏数组的第一行,根据第一行的数据,创建原始二维数组
            // 2.在读取稀疏数组的后几行数据,并付给原始二维数组即可
            int cheerArr2[][]=new int[sparseArr[0][0]][sparseArr[0][1]];
            for (int i=1;i<sparseArr.length;i++){
                cheerArr2[sparseArr[i][0]][sparseArr[i][1]]=sparseArr[i][2];
            }
            //恢复的二维数组
            System.out.println();
            System.out.println("恢复的二维数组");
            for(int[] row:cheerArr2){
                for (int data:row){
                    System.out.printf("%d	",data);
                }
                System.out.println();
            }
        }
    
    }
    

      

     

      

     

  • 相关阅读:
    《.NET内存管理宝典 》(Pro .NET Memory Management) 阅读指南
    《.NET内存管理宝典 》(Pro .NET Memory Management) 阅读指南
    《.NET内存管理宝典 》(Pro .NET Memory Management) 阅读指南
    使用Jasmine和karma对传统js进行单元测试
    《.NET内存管理宝典 》(Pro .NET Memory Management) 阅读指南
    《.NET内存管理宝典 》(Pro .NET Memory Management) 阅读指南
    nginx 基于IP的多虚拟主机配置
    Shiro 框架的MD5加密算法实现原理
    项目实战:Qt+OSG三维点云引擎(支持原点,缩放,单独轴或者组合多轴拽拖旋转,支持导入点云文件)
    实用技巧:阿里云服务器建立公网物联网服务器(解决阿里云服务器端口,公网连接不上的问题)
  • 原文地址:https://www.cnblogs.com/nidegui/p/11718256.html
Copyright © 2011-2022 走看看