Java稀疏数组
package aStudy.day1;
public class data01 {
public static void main(String[] args) {
int[][] arr = new int[10][10];
arr[2][2] = 2;
arr[3][3] = 3;
arr[4][4] = 4;
System.out.println("原始二维数组:");
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length; j++) {
System.out.printf("%d\t",arr[i][j]);
}
System.out.println();
}
int sum = 0;
for (int i = 0; i < arr.length; i++)
for (int j = 0; j < arr.length; j++)
if (arr[i][j] != 0) sum++;
System.out.println("获取原始数组中有效数据个数:"+sum);
int[][] arrMini = new int[sum+1][3];
arrMini[0][0] = 10;
arrMini[0][1] = 10;
arrMini[0][2] = sum;
System.out.println("赋值个稀疏数组:");
int count=0;
for (int i = 0; i < arr.length; i++)
for (int j = 0; j < arr.length; j++)
if (arr[i][j] != 0){
count++;
arrMini[count][0] = i;
arrMini[count][1] = j;
arrMini[count][2] = arr[i][j];
}
System.out.println("稀疏数组:");
for (int i = 0; i < arrMini.length; i++) {
System.out.printf("%d\t%d\t%d\t", arrMini[i][0], arrMini[i][1], arrMini[i][2]);
System.out.println();
}
int x,y;
x = arrMini[0][0];
y = arrMini[0][1];
int[][] reArr = new int[x][y];
for (int i = 1; i < arrMini.length; i++)
reArr[arrMini[i][0]][arrMini[i][1]] = arrMini[i][2];
System.out.println("恢复后的二维数组");
for (int[] row : reArr) {
for (int data : row) {
System.out.printf("%d\t",data);
}
System.out.println();
}
}
}
