欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

稀疏数组

程序员文章站 2022-06-03 18:37:28
...

稀疏数组

二维数组转稀疏数组

public static void main(String[] args) {
		// TODO 自动生成的方法存根
        //创建原始二维数组
		//原始数组为11*11的棋盘,0表示无子,1表示黑子,2表示蓝子
		
		int[][] Array1=new int[11][11];
		Array1[1][2]=1;
		Array1[2][3]=2;
		
		//原始数组创建完毕
		//转稀疏数组
		//遍历数组,计算有几个有效的数据
		int sum=0;  //用于存储有几个有效的数据
		System.out.println("原始数组");
		for(int i=0;i<Array1.length;i++) {
			for(int j=0;j<Array1[0].length;j++) {
				System.out.print(Array1[i][j]);
				System.out.print(" ");
				if(Array1[i][j]!=0) {
					
					sum++;
				}
			}
			System.out.print("\n");

		}
		
		//计算出有几个有效数组之后,进行创建稀疏数组
		int[][] sparseArray=new int[sum+1][3];
		//第一行存储 原始数组共有 几行 几列 有效数据个数
		sparseArray[0][0]=Array1.length;
		sparseArray[0][1]=Array1[0].length;
		sparseArray[0][2]=sum;
		
		//开始存储有效数据
		int a=1;
		System.out.println("二维数组");
	    for(int i=0;i<Array1.length;i++) {
			for(int j=0;j<Array1[0].length;j++) {
				if(Array1[i][j]!=0) {
					sparseArray[a][0]=i; //第一列存储行
					sparseArray[a][1]=j; //第二列存储列
					sparseArray[a][2]=Array1[i][j]; //第三行存储有效数据
					
					//行++
					a++;
				}
			}
		}
	    
	    //输出稀疏数组
	    for(int i=0;i<sparseArray.length;i++) {
	    	for(int j=0;j<sparseArray[0].length;j++) {
	    		System.out.print(sparseArray[i][j]);
	    		System.out.print(" ");
	    		
	    	}
	    	System.out.print("\n");
	    }
	}

稀疏数组转二维数组

public static void main(String[] args) {
		// TODO 自动生成的方法存根
        System.out.println("稀疏矩阵:");
        int[][] sparseArray=new int[3][3];
        sparseArray[0][0]=11;
        sparseArray[0][1]=11;
        sparseArray[0][2]=2;
        sparseArray[1][0]=1;
        sparseArray[1][1]=2;
        sparseArray[1][2]=1;
        sparseArray[2][0]=2;
        sparseArray[2][1]=3;
        sparseArray[2][2]=2;
        for(int i=0;i<sparseArray.length;i++) {
	    	for(int j=0;j<sparseArray[0].length;j++) {
	    		System.out.print(sparseArray[i][j]);
	    		System.out.print(" ");
	    	}
	    	System.out.print("\n");
	    }
        
        System.out.println("原始矩阵:");
        //数组的高为稀疏数组的第1行第1列,长为稀疏数组的第1行第2列
        int[][] Array=new int[sparseArray[0][0]][sparseArray[0][1]];
        int x=0; //记录有效数据的行
        int y=0; //记录有效数据的列
        for(int i=1;i<sparseArray.length;i++) {
	    	x=sparseArray[i][0];
	    	y=sparseArray[i][1];
	    	Array[x][y]=sparseArray[i][2];
	    }
        
        for(int i=0;i<Array.length;i++) {
        	for(int j=0;j<Array[0].length;j++) {
        		System.out.print(Array[i][j]);
        		System.out.print(" ");
        	}
        	System.out.print("\n");
        }
        
	}
相关标签: 数据结构 java