一、稀疏陣列
阿新 • • 發佈:2020-10-20
程式碼實現:
1 public class SparseArray { 2 3 public static void main(String[] args) { 4 5 //建立一個原始的二維陣列11*11 6 //1表示黑子,2表示白子,三表示沒有棋子 7 int[][] chessArr1 = new int[11][11]; 8 chessArr1[1][2] = 1; 9 chessArr1[2][3] = 2; 10 //輸出原始陣列 11 for(int[] ints : chessArr1) { 12 for (int anInt : ints) { 13 System.out.print(anInt + "\t"); 14 } 15 System.out.println(); 16 } 17 //將二維陣列轉換為稀疏陣列 18 //1.先遍歷二維陣列得到非0資料的個數 19 int sum = 0; 20 for (int i = 0; i < chessArr1.length; i++) {21 for (int j = 0; j < chessArr1[0].length; j++) { 22 if (chessArr1[i][j] != 0){ 23 sum++; 24 } 25 } 26 } 27 System.out.println("sum="+sum); 28 //2.根據sum的值建立對應的陣列 29 int[][] sparseArr = new int[sum + 1][3];30 sparseArr[0][0] = chessArr1.length; 31 sparseArr[0][1] = chessArr1[0].length; 32 sparseArr[0][2] = sum; 33 //遍歷二維陣列將非零的值存放到稀疏陣列中 34 int count = 0;//用於計數,記錄是第幾個非零資料 35 for (int i = 0; i < chessArr1.length; i++) { 36 for (int j = 0; j < chessArr1[0].length; j++) { 37 if (chessArr1[i][j] != 0){ 38 count++; 39 sparseArr[count][0] = i; 40 sparseArr[count][1] = j; 41 sparseArr[count][2] = chessArr1[i][j]; 42 } 43 } 44 } 45 //輸出稀疏陣列的形式 46 System.out.println("得到的稀疏陣列為以下形式:"); 47 for (int[] ints : sparseArr) { 48 for (int anInt : ints) { 49 System.out.print(anInt + "\t"); 50 } 51 System.out.println(); 52 } 53 54 //將稀疏陣列恢復成原始的二維陣列 55 //1.先讀取稀疏陣列第一行,根據其第一行來得到原陣列的行和列 56 int row = sparseArr[0][0]; 57 int cos = sparseArr[0][1]; 58 int[][] chessArr2 = new int[row][cos]; 59 //2.讀取稀疏陣列,賦值 60 for (int i = 1; i < sparseArr.length; i++) { 61 chessArr2[sparseArr[i][0]][sparseArr[i][1]] = sparseArr[i][2]; 62 } 63 64 System.out.println("還原的陣列為以下形式:"); 65 for (int[] ints : chessArr2) { 66 for (int anInt : ints) { 67 System.out.print(anInt + "\t"); 68 } 69 System.out.println(); 70 } 71 } 72 73 74 }