稀疏矩阵
因为二维数组很多值默认为零,因此记录了很多没有意义的数据。
使用二维数组(三元组)来解决这种问题
源代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
| import java.util.Arrays;
public class Demo05 { public static void main(String[] args) { int[][] a = new int[11][11]; a[1][2] = 1; a[2][3] = 2; for (int[] ints : a) { for (int anInt : ints) { System.out.print(anInt + "\t"); } System.out.println(); } System.out.println("============================="); int sum = 0; for (int i = 0; i < a.length; i++) { for (int j = 0; j < a[0].length; j++) { if (a[i][j]>0) { sum++; } } } System.out.println("有效值的个数: " + sum);
int [][] a2 = new int[sum+1][3]; a2[0][0] = a.length; a2[0][1] = a[0].length; a2[0][2] = sum;
int count = 0; for (int i = 0; i < a.length; i++) { for (int j = 0; j < a[0].length; j++) { if (a[i][j] > 0) { count++; a2[count][0] = i; a2[count][1] = j; a2[count][2] = a[i][j]; } } }
for (int i = 0; i < a2.length; i++) { System.out.println(Arrays.toString(a2[i])); } System.out.println("============================="); int a3[][] = new int[a2[0][0]][a2[0][1]]; for (int i = 1; i < a2.length; i++) { a3[ a2[i][0] ][ a2[i][1] ]=a2[i][2]; } for (int[] ints : a3) { for (int anInt : ints) { System.out.print(anInt+"\t"); } System.out.println(); }
} }
|
运行结果
