效果图
思路分析
cust.aowei.sparseArray
SparseArray.java
创建原始二维数组11*11
0表示没有棋子,1表示黑子,2表示蓝子
输出原二维数组
将二维数组(chessArray)转为稀疏数组
先遍历二维数组 得到非0个数
创建对应的稀疏数组(sparseArray)
先给稀疏数组赋值
遍历二维数组,将非零的值存放到saprseArray
count用于记录第几个非零数据
输出稀疏数组
稀疏数组恢复二维数组
先读取稀疏数组第一行,根据第一行数据,创建原始二维数组
读取稀疏数组后几行数据,并赋值给原来的二维数组
具体实现代码
package cust
.aowei
.sparseArray
;
public class SparseArray {
public static void main(String
[] args
) {
Array array
= new Array();
int
[][]cArray
= array
.createChessArray();
array
.loopChessArray(cArray
);
int
[][]sArray
= array
.teansformSparseArray(cArray
);
array
.loopSparseArray(sArray
);
int
[][]cArray1
= array
.teansformChessArray(sArray
);
array
.loopChessArray(cArray1
);
}
}
class Array{
private final int
C=11;
private final int
L=11;
int
[][] createChessArray(){
int
[][]chessArray
= new int[C][L];
for(int i
=0;i
<C;i
++){
for (int j
=0;j
<L;j
++){
chessArray
[i
][j
] = 0;
}
}
chessArray
[2][1]=1;
chessArray
[8][7]=2;
chessArray
[3][6]=2;
return chessArray
;
}
void loopChessArray(int
[][] chessArray
){
System
.out
.println("原二维数组:");
for(int i
=0;i
<C;i
++){
for (int j
=0;j
<L;j
++){
System
.out
.print(chessArray
[i
][j
]+" ");
}
System
.out
.println();
}
}
int
[][] teansformSparseArray(int
[][] chessArray
){
int tempCount
= 1;
for(int i
=0;i
<C;i
++){
for (int j
=0;j
<L;j
++){
if(chessArray
[i
][j
] != 0){
tempCount
++;
}
}
}
int
[][]sparseArray
= new int[tempCount
][3];
sparseArray
[0][0]=C;
sparseArray
[0][1]=L;
sparseArray
[0][2]=tempCount
;
tempCount
=1;
for(int i
=0;i
<C;i
++){
for (int j
=0;j
<L;j
++){
if(chessArray
[i
][j
] != 0){
sparseArray
[tempCount
][0]=i
;
sparseArray
[tempCount
][1]=j
;
sparseArray
[tempCount
][2]=chessArray
[i
][j
];
tempCount
++;
}
}
}
return sparseArray
;
}
void loopSparseArray(int
[][] sparseArray
){
System
.out
.println("稀疏数组:");
for(int i
=0;i
<sparseArray
.length
;i
++){
for (int j
=0;j
<sparseArray
[0].length
;j
++){
System
.out
.print(sparseArray
[i
][j
]+"\t");
}
System
.out
.println();
}
}
int
[][] teansformChessArray(int
[][] sparseArray
){
int
[][] chessArray
= new int[sparseArray
[0][0]][sparseArray
[0][1]];
for(int i
=1;i
<sparseArray
.length
;i
++){
int j
=0;
chessArray
[sparseArray
[i
][j
]][sparseArray
[i
][j
+1]] = sparseArray
[i
][j
+2];
}
return chessArray
;
}
}
转载请注明原文地址: https://mac.8miu.com/read-67104.html