稀疏数组

稀疏数组:当一个数组中的大部分数据为相同数据时,可以用稀疏数组保存

方法:记录几行几列和不同值的个数,再把不同值的数据单独罗列出来,从而达到压缩的目的

没有什么难点,所以直接上代码了 

 

 1 public class SparesArray {
 2     public static void main(String[] args) {
 3         int chessArr1[][] = new int[11][11];
 4         chessArr1[1][2] = 1;
 5         chessArr1[2][3] = 2;
 6         chessArr1[3][4] = 1;
 7 
 8 
 9 
10         for (int[] row : chessArr1){
11             for (int data : row){
12                 System.out.printf("%d\t",data);
13             }
14             System.out.println();
15         }
16 
17         int sum = 0;
18         for (int i = 0; i < 11; i++){
19             for (int j = 0; j < 11; j++){
20                 if (chessArr1[i][j] != 0){
21                     sum++;
22                 }
23             }
24         }
25 
26 
27         int sparesArr[][] = new int[sum+1][3];
28         sparesArr[0][0] = 11;
29         sparesArr[0][1] = 11;
30         sparesArr[0][2] = sum;
31         int count = 0;
32         for (int i = 0; i < 11; i++){
33             for (int j = 0; j < 11; j++){
34                 if (chessArr1[i][j] != 0){
35                     count++;
36                     sparesArr[count][0] = i;
37                     sparesArr[count][1] = j;
38                     sparesArr[count][2] = chessArr1[i][j];
39                 }
40             }
41         }
42 
43         //  压缩后显示
44         for (int[] row : sparesArr){
45             for (int data : row){
46                 System.out.printf("%d\t",data);
47             }
48             System.out.println();
49         }
50 
51         System.out.println();
52         
53         //解压缩
54         int chessArr2[][] = new int[sparesArr[0][0]][sparesArr[0][1]];
55         for (int i = 1; i < sparesArr.length; i++){
56             chessArr2[sparesArr[i][0]][sparesArr[i][1]] = sparesArr[i][2];
57         }
58         for (int[] row : chessArr2){
59             for (int data : row){
60                 System.out.printf("%d\t",data);
61             }
62             System.out.println();
63         }
64     }
65 }

你可能感兴趣的:(稀疏数组)