package com.qcby.bilbil;
/**
* @author HuangHaiyang
* @date 2020/07/01
* @description: description
* @version: 1.0.0
*/
public class SparseArray {
public static void main(String[] args) {
//原始數組
int[][] originalArray=new int [11][11];
originalArray[1][2]=1;
originalArray[2][3]=2;
System.out.println("原始數組爲:");
int sum=0;//通過sum的大小確定稀疏數組的大小
for (int i = 0; i < originalArray.length; i++) {
for (int j = 0; j < originalArray.length; j++) {
System.out.print(" "+originalArray[i][j]+" ");
if (originalArray[i][j]!=0){
sum++;
}
}
System.out.println();
}
int[][] sparseArray=new int[sum+1][3];
sparseArray[0][0]=originalArray.length;//記錄原始數組的行數
sparseArray[0][1]=originalArray[0].length;//記錄原始數組的列數
sparseArray[0][2]=sum;//記錄不爲0的數的個數
int count=0;
for (int i = 0; i < originalArray.length; i++) {
for (int j = 0; j < originalArray.length; j++) {
if (originalArray[i][j]!=0){
count++;
sparseArray[count][0]=i;
sparseArray[count][1]=j;
sparseArray[count][2]=originalArray[i][j];
}
}
}
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]+" ");
}
System.out.println();
}
int[][] restoreArray=new int[sparseArray[0][0]][sparseArray[0][1]];
for (int i = 1; i < sparseArray.length; i++) {
restoreArray[sparseArray[i][0]][sparseArray[i][1]]=sparseArray[i][2];
}
System.out.println("根據稀疏數組復原的數組");
for (int i = 0; i < restoreArray.length; i++) {
for (int j = 0; j <restoreArray.length ; j++) {
System.out.print(" "+restoreArray[i][j]+" ");
}
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
稀疏數組爲
11 11 2
1 2 1
2 3 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
Process finished with exit code 0