public static void main(String[] args) {
// 1. 创建11*11棋盘, 0 表示没有棋子,1 表示白色,2 表示黑色
int[][] arr1 = new int[11][11];
arr1[1][2] = 1;
arr1[2][3] = 2;
// 2. 输出原始的数组
/*
0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0
0 0 0 2 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
*/
System.out.println("输出原始数组");
for (int[] ints : arr1) {
for (int anInt : ints) {
System.out.print(anInt + "\t");
}
System.out.println();
}
System.out.println("====================");
// 3. 输出稀疏数组
// System.out.println("输出稀疏数组");
// 3.1 获取有效值个数
// System.out.println("获取有效值个数");
int sum = 0;
for (int i = 0; i < arr1.length; i++) {
for (int j = 0; j < arr1[i].length; j++) {
if (arr1[i][j] != 0) {
sum++;
}
}
}
System.out.println("有效值个数为:" + sum + "个");
System.out.println("====================");
// 3.2 创建稀疏数组
int count = 0;
int[][] arr2 = new int[sum + 1][3];
arr2[0][0] = arr1.length;
arr2[0][1] = arr1[0].length;
arr2[0][2] = sum;
for (int i = 0; i < arr1.length; i++) {
for (int j = 0; j < arr1[i].length; j++) {
if (arr1[i][j] != 0) {
count++;
arr2[count][0] = i;
arr2[count][1] = j;
arr2[count][2] = arr1[i][j];
}
}
}
// 3.3 输出稀疏数组
System.out.println("输出稀疏数组");
for (int i = 0; i < arr2.length; i++) {
System.out.println(arr2[i][0] + "\t" +
arr2[i][1] + "\t" +
arr2[i][2] + "\t");
}
// 4. 还原
System.out.println("====================");
int[][] arr3 = new int[arr2[0][0]][arr2[0][1]];
for (int i = 1; i < arr2.length; i++) {
arr3[arr2[i][0]][arr2[i][1]] = arr2[i][2];
}
System.out.println("还原数组");
/*
0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0
0 0 0 2 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
*/
for (int[] ints : arr3) {
for (int anInt : ints) {
System.out.print(anInt + "\t");
}
System.out.println();
}
}
稀疏数组的创建与复原操作(不含原理)
最新推荐文章于 2022-06-08 18:18:39 发布