Java_稀疏数组

上面案列的代码如下

 1 package com.wang.array;
 2 
 3 public class SparseArray {
 4     public static void main(String[] args) {
 5         // 第一步:创建一个11*11二维数组:0:无子, 1:黑子, 2:白子
 6         int[][] array = new int[11][11];
 7         array[1][2] = 1;
 8         array[2][3] = 2;
 9         for (int i = 0; i < array.length; i++) {
10             for (int j = 0; j < array[i].length - 1; j++) {
11                 System.out.print(array[i][j] + "	");
12             }
13             System.out.println();
14         }
15 
16         // 第二步:把有效数据取出来,非0的数据
17         int sum = 0;
18         for (int i = 0; i < array.length; i++) {
19             for (int j = 0; j < array[i].length - 1; j++)
20                 if (array[i][j] != 0) {
21                     sum++;
22                 }
23         }
24 
25         // 第三步:创建稀疏数组
26         int[][] sparseArray = new int[sum + 1][3];
27         sparseArray[0][0] = array.length;
28         sparseArray[0][1] = array.length;
29         sparseArray[0][2] = sum;
30 
31         // 第四步:给稀疏数组赋值
32         int count = 0;
33         for (int i = 0; i < array.length; i++) {
34             for (int j = 0; j < array[i].length - 1; j++) {
35                 if (array[i][j] != 0) {
36                     count++;
37                     sparseArray[count][0] = i;
38                     sparseArray[count][1] = j;
39                     sparseArray[count][2] = array[i][j];
40                 }
41             }
42         }
43 
44         System.out.println("*****************");
45         // 打印稀疏数组的内容
46         for (int i = 0; i < sparseArray.length; i++) {
47             for (int i1 = 0; i1 < sparseArray[i].length; i1++) {
48                 System.out.print(sparseArray[i][i1] + "	");
49             }
50             System.out.println();
51         }
52 
53         // 由稀疏数组还原为二维数组
54         int[][] array1 = new int[sparseArray[0][0]][sparseArray[0][1]];
55         for (int i = 1; i < sparseArray.length; i++) {
56             for (int i1 = 0; i1 < sparseArray[i].length; i1++) {
57                 array1[sparseArray[i][0]][sparseArray[i][1]] = sparseArray[i][2];
58             }
59         }
60 
61         System.out.println("*****************");
62         // 打印还原后的二维数组
63         for (int i = 0; i < array1.length; i++) {
64             for (int j = 0; j < array1[i].length - 1; j++) {
65                 System.out.print(array1[i][j] + "	");
66             }
67             System.out.println();
68         }
69     }
70 }

执行后的结果

 

原文地址:https://www.cnblogs.com/1123-wyl/p/15010533.html