稀疏数组
程序员文章站
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表示)
下一篇: 最短路基础与习题