02 資料結構與演算法之稀疏陣列
阿新 • • 發佈:2020-12-09
介紹
當一個數組中大部分元素為0,或者為同一個值時,可以用稀疏陣列來儲存該陣列
稀疏陣列的處理方法
1. 記錄陣列中一共有幾行幾列,有多少個不同的值
2. 把具有不同值的元素的行、列及值記錄在一個小規模的陣列中,從而縮小程式的規模。
二維陣列:
轉換後的稀疏陣列:
說明:第一行儲存陣列有多少行,多少列,多少個有效值。後面的所有行分別記錄有效值的行號和列號。
程式碼實現
-
二維陣列轉換為稀疏陣列
1、遍歷原始的二維陣列,得到有效資料的個數sum
2、根據sum,就可以建立稀疏陣列sparseArr int[sum + 1][3]
3、將二維陣列的有效資料存入到稀疏陣列//建立一個原始的二維陣列 11*11 //0:沒有棋子 1:黑子 2:藍子 int[][] chessArr1 = new int[11][11]; for(int i = 0; i<chessArr1.length; i++){ for(int j = 0; j<chessArr1[i].length; j++) chessArr1[i][j] = 0; } chessArr1[1][2] = 1; chessArr1[2][3] = 2; //將二維陣列轉稀疏陣列 //1、先遍歷二維陣列,得到非0資料的個數
-
稀疏陣列恢復成二維陣列
//將稀疏陣列恢復成二維陣列 int[][] chessArr2 = new int[sparseArr[0][0]][sparseArr[0][1]]; for(int i = 0; i<sparseArr[0][2]; i++){ chessArr2[sparseArr[i+1][0]][sparseArr[i+1][1]] = sparseArr[i+1][2]; }