二维数组转稀疏数组–稀疏数组转二维数组
图片引用:【狂神说Java】Java零基础学习视频通俗易懂 “P59 Java数组09 稀疏数组”
代码实现:
public static void main(String[] args) {
//1.创建一个二维数组11*11; 0:没有棋子 1:代表白棋子 2:代表黑棋
int [][] array = new int [11][11];
array [2][4] = 1;
array [6][8] = 1;
//输出数组
for (int[] inInt : array) {
for (int anInt: inInt) {
System.out.print(anInt+"\t");
}
System.out.println();
}
System.out.println("=================================");
//转换为稀疏数组
//判断不等于0的数有多少
int sum = 0;
for (int i = 0; i < 11; i++) {
for (int j = 0; j < 11; j++) {
if(array[i][j]!=0){
sum++;
}
}
}
System.out.println("有效值的个数"+sum);
int[][] xishu = new int[sum+1][3];
xishu[0][0] = 11;
xishu[0][1] = 11;
xishu[0][2] = sum;
//遍历二维数组
int count = 0;
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
if(array[i][j]!=0){
count++;
xishu[count][0] = i;
xishu[count][1] = j;
xishu[count][2] = array[i][j];
}
}
}
//输出稀疏数组
System.out.println("输出稀疏数组:");
for (int i = 0; i < xishu.length; i++) {
System.out.println(xishu[i][0] + "\t"+xishu[i][1] + "\t"+xishu[i][2] + "\t");
}
System.out.println("=================================");
//还原二维数组
//1.读取稀疏数组
int[][] twoArray = new int[xishu[0][0]][xishu[0][1]];
//2.给其中的元素还原他的值
for (int i = 1; i < xishu.length; i++) {
twoArray[xishu[i][0]][xishu[i][1]] = xishu[i][2];
}
//3.打印数组
System.out.println("输出还原数组");
for (int[] inInt : twoArray) {
for (int anInt: inInt) {
System.out.print(anInt+"\t");
}
System.out.println();
}
System.out.println("=================================");
}