稀疏数组:
当一个数组在中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。
稀疏数组的处理方法;
记录数组一共有几行几列,有多少个不同的值。
把具有不同值的元素的行列有值记录在一个小规模的数组中,从而缩小程序的规模。
代码:
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 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
| long startTime = System.currentTimeMillis(); int sum = 2; int[][] sparseArray = new int[1][3];
sparseArray[0][0] = 11; sparseArray[0][1] = 11; sparseArray[0][2] = sum; int[][] array = chessArrayBySparseArray(sparseArray); for (int[] ints : array) { for (int data : ints) { System.out.printf("%d\t", data); } } long endTime = System.currentTimeMillis(); System.out.println("总共花费:"+(endTime-startTime)); }
private static void sparseArray(int sum) { int[][] chessArray = chessArray(); for (int[] rows : chessArray) { for (int data : rows) { if (data != 0) { sum++; } } }
int[][] sparseArray = new int[sum + 1][3];
sparseArray[0][0] = 11; sparseArray[0][1] = 11; sparseArray[0][2] = sum; int count = 0;
for (int i = 0; i < chessArray.length-1; i++) { for (int j = 0; j < chessArray.length-1; j++) { if (chessArray[i][j] != 0) { count++; sparseArray[count][0] = i; sparseArray[count][1] = j; sparseArray[count][2] = chessArray[i][j]; }
} } System.out.println("稀疏数组!!!"); System.out.println(); for (int[] ints : sparseArray) { for (int data : ints) { System.out.printf("%d\t", data); } } }
private static int[][] chessArray() { int[][] chessArray = new int[11][11]; chessArray[1][2] = 1; chessArray[2][3] = 2; System.out.println("原数组为:"); for (int[] rows : chessArray) { for (int data : rows) { System.out.printf("%d\t", data); } } return chessArray; } }
|