稀疏数组
稀疏数组:当一个数组中的大部分数据为相同数据时,可以用稀疏数组保存
方法:记录几行几列和不同值的个数,再把不同值的数据单独罗列出来,从而达到压缩的目的
没有什么难点,所以直接上代码了
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 }
根据自我理解改写

浙公网安备 33010602011771号