zoukankan      html  css  js  c++  java
  • 数据结构与算法-java-稀疏数组

    那么首先明白什么是稀疏数组

     稀疏数组只有在数据稀疏的时候才会有优势,而它的特点就是永远是三列,数据行的话是数据个数+1,因为用第一行记录原本的几行几列和多少个数

    那么我们用接下来这个案例演示一下

    public class SparseArray {
        public static void main(String[] args) {
            int chessArr1[][] = new int [11][11];
            chessArr1[1][2] = 1;
            chessArr1[2][3] = 2;
            for (int[]row:chessArr1)
            {
                for(int data :row)
                {
                    System.out.printf("%d	", data);//printf主要是继承了C语言的printf的一些特性,可以进行格式化输出
                }
                System.out.println();//这里是为了换行,不然打印出来就是全在一行里面
            }
            //将二维数组转稀疏数组
            //先得到非0数据个数
            int sum =0 ;
            for(int i=0;i<11;i++)
            {
                for(int j=0;j<11;j++)
                {
                    if (chessArr1[i][j] != 0) {
                        sum++;
                    }
                }
            }
            //2.创建稀疏数组
            int sparseArr[][]=new int[sum+1][3];
            //给稀疏数组赋值
            sparseArr[0][0]=11;
            sparseArr[0][1]=11;
            sparseArr[0][2]=sum;
    
            //遍历二维数组,将非零的数据存放到稀疏数组中
            int count=0;
            for (int i = 0; i <11 ; i++) {
                for (int j=0;j<11;j++){
                    if (chessArr1[i][j]!=0){
                        count++;
                        sparseArr[count][0]=i;  //有数据时进入if然后数据的行放入稀疏数组
                        sparseArr[count][1]=j;  //将对应有数值的列放入稀疏数组
                        sparseArr[count][2]=chessArr1[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();
            }
            //将稀疏数组恢复到二维数组
    
            int chessArr2[][] =new int[sparseArr[0][0]][sparseArr[0][1]];
    
    
            for (int i=1;i<sparseArr.length;i++){
                chessArr2[sparseArr[i][0]][sparseArr[i][1]]=sparseArr[i][2];
            }
            //输出恢复后的二维数组
            System.out.println();
            System.out.println("恢复后的二维数组");
            for (int[] row:chessArr2){
                for (int data:row){
    
                    System.out.printf("%d	",data);
                }
                System.out.println();
            }
    
        }
    
    
    }

  • 相关阅读:
    Firefox常用web开发插件
    引用MFC指针的获取(转载)
    J2EE的13种核心技术(转载)
    用Visio画ER图的解决方案(转载)
    [导入]六一
    [导入]独自等待
    [导入]随想
    [导入]小聚
    [导入]网站需求分析
    [导入]如何做好网站开发项目需求分析
  • 原文地址:https://www.cnblogs.com/yangj-Blog/p/12957415.html
Copyright © 2011-2022 走看看