public class SparseArray {
public static void main(String[] args) {
int[][] oldArray = new int[11][11];
oldArray[1][2] = 1;
oldArray[2][3] = 2;
int[][] sparse = saveArray(oldArray);
int[][] newArr = readArray(sparse);
printArr(newArr);
}
private static int[][] readArray(int[][] sparse) {
int[][] newArr = new int[sparse[0][0]][sparse[0][1]];
for (int i = 1; i < sparse.length; i++) {
newArr[sparse[i][0]][sparse[i][1]] = sparse[i][2];
}
return newArr;
}
private static int[][] saveArray(int[][] oldArray) {
printArr(oldArray);
int rowLength = oldArray.length;
int colLength = oldArray[0].length;
int sum = 0;
for (int i = 0; i < rowLength; i++) {
for (int j = 0; j < colLength; j++) {
if(0 != oldArray[i][j]){
sum++;
}
}
}
int[][] sparseArray = new int[sum+1][3];
sparseArray[0][0] = rowLength;
sparseArray[0][1] = colLength;
sparseArray[0][2] = sum;
int sparseRow = 1;
for (int i = 0; i < rowLength; i++) {
for (int j = 0; j < colLength; j++) {
if(0 != oldArray[i][j]){
sparseArray[sparseRow][0] = i;
sparseArray[sparseRow][1] = j;
sparseArray[sparseRow][2] = oldArray[i][j];
sparseRow++;
}
}
}
return sparseArray;
}
private static void printArr(int[][] arr) {
for (int[] row : arr) {
for (int data : row) {
System.out.printf("%d\t", data);
}
System.out.println();
}
}
}
版权声明:本文为qq_42154259原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。