数据结构--稀疏数组(Java)

Java实现:二维数组—>稀疏数组—>二维数组

package com.datastructure;

public class SparseMatrix {
	public static void main(String[]args) {
		int[][] matrix = new int[4][4];
		matrix[0][1] = 1;
		matrix[1][3] = 3;
		matrix[2][2] = 5;
		matrix[0][0] = 11;
		System.out.println("初始二维数组:");
		printMatrix(matrix);
		
		//1.统计数组中非0元素的个数
		int sum = 0;
		for (int i=0; i<matrix.length; i++) {
			for (int j=0; j<matrix[i].length; j++) {
				if (matrix[i][j] != 0) {
					sum++;
				}
			}
		}
		System.out.println("数组中非0元素的个数:"+sum);
		
		//2.1创建对应的稀疏矩阵	
		int[][] sparseMatrix = new int[sum+1][3];
		sparseMatrix[0][0] = 4;  //存放二维数组的行数row
		sparseMatrix[0][1] = 4;  //存放二维数组的列数col
		sparseMatrix[0][2] = sum;  //存放二维数组中有效元素的个数
		
		//2.2遍历二维数组并记录非0元素
		int count = 0;
		for (int i=0; i<matrix.length; i++) {
			for (int j=0; j<matrix[i].length; j++) {
				if (matrix[i][j] != 0) {
					count++;
					sparseMatrix[count][0] = i;
					sparseMatrix[count][1] = j;
					sparseMatrix[count][2] = matrix[i][j];
				}
			}
		}
		
		System.out.println("稀疏矩阵:");
		printMatrix(sparseMatrix);
		
		//3.稀疏矩阵转化成二维数组
		int[][] initialMat = new int[sparseMatrix[0][0]][sparseMatrix[0][1]];
		for (int i=1; i<sparseMatrix.length; i++) {
			initialMat[sparseMatrix[i][0]][sparseMatrix[i][1]] = sparseMatrix[i][2];
		}
		System.out.println("初始二维数组:");
		printMatrix(initialMat);

	}
	
	
	public static void printMatrix(int matrix[][]) {
		for (int i=0; i<matrix.length; i++) {
			for (int j=0; j<matrix[i].length; j++) {
				System.out.print(matrix[i][j]+"\t");
			}
			System.out.println();
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值