您好,登錄后才能下訂單哦!
這篇文章主要講解了Sparsearray稀疏數組的使用方法,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。
今天復習下稀疏數組相關思想。
問題引入:編寫的五子棋程序中,有存盤退出和續上盤的功能。
如上圖所示二維數組,大多值是默認值(0),所以記錄大量無意義的數據意義不大,此時可以引入稀疏數組。
稀疏數組介紹:當一個數組大部分元素為固定值時,可以使用稀疏數組來保存類似數組;
稀疏數組處理思路:
稀疏數組記錄二維數組的行列數以及非默認值數目;
將原始數組中的非默認值以及其坐標記錄在稀疏數組中,從而減小文件容量;
public class SparseArray { public static void main(String[] args) { // 創建原始二維數組(0 表示無子,1 表示黑子 2 表示 白子) int chessArr1[][] = new int[11][11]; chessArr1[1][2] = 1; chessArr1[3][3] = 2; chessArr1[5][1] = 2; // 使用 for 循環遍原始二維數組 System.out.println("-------------------------------------------原始二維數組---------------------------------"); for (int row[] : chessArr1) { for (int data : row) { System.out.printf("%d\t", data); } System.out.println(); } // 將二維數組轉換為洗漱數組 // 獲取原始二維數組非零數目 int sum = 0; for (int i = 0; i < chessArr1.length; i++) { for (int j = 0; j < chessArr1.length; j++) { if (chessArr1[i][j] != 0) { sum++; } } } System.out.println("sum = " + sum); // 創建稀疏數組 int sparseArr[][] = new int[sum + 1][3]; // 為稀疏數組賦值 sparseArr[0][0] = chessArr1.length; sparseArr[0][1] = chessArr1.length; sparseArr[0][2] = sum; // 便利原始二維數組,進行存放 int n = 0; for (int i = 0; i < chessArr1.length; i++) { for (int j = 0; j < chessArr1.length; j++) { if (chessArr1[i][j] != 0) { n++; sparseArr[n][0] = i; sparseArr[n][1] = j; sparseArr[n][2] = chessArr1[i][j]; } } } // 遍歷稀疏數組 System.out.println("-------------------------------------------稀疏數組---------------------------------"); for (int i = 0; i < sparseArr.length; i++) { System.out.printf("%d\t%d\t%d\t\n", sparseArr[i][0], sparseArr[i][1], sparseArr[i][2]); } // 將稀疏數組還原為原始二維數組 int chessArr2[][] = new int[sparseArr[0][0]][sparseArr[0][1]]; for (int i = 1; i < sparseArr.length; i++) { chessArr2[chessArr2[i][0]][chessArr2[i][1]] = chessArr2[i][2]; } System.out.println("-------------------------------------------恢復后的二維數組---------------------------------"); for (int row[] : chessArr1) { for (int data : row) { System.out.printf("%d\t", data); } System.out.println(); } } }
輸出結果如下:
-------------------------------------------原始二維數組------------------------------- 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 sum = 3 -------------------------------------------稀疏數組--------------------------------- 11 11 3 1 2 1 3 3 2 5 1 2 -------------------------------------------恢復后的二維數組--------------------------- 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
看完上述內容,是不是對Sparsearray稀疏數組的使用方法有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。