先看乙個實際需求,編寫乙個五子棋程式,有存檔和續上盤的功能。
當乙個陣列中大部分元素為0,或者為同乙個值時,可以使用稀疏陣列來儲存改陣列。
稀疏陣列的處理方法是:
使用稀疏陣列,來保留類似前面的二維陣列(棋盤、地圖)
把稀疏陣列存檔,並且可以重新恢復原來的二維陣列
整體思路
1. 遍歷原始的二維陣列,得到有效資料的個數 sum
2. 根據sum 就可以建立 稀疏陣列 sparsearr int[sum + 1] [3]
3. 將二維陣列的有效資料資料存入到 稀疏陣列
1. 先讀取稀疏陣列的第一行,根據第一行的資料,建立原始的二維陣列,比如上面的 chessarr2 = int [11][11]
2. 在讀取稀疏陣列後幾行的資料,並賦給原始的二維陣列即可.
package com.com.jdy;public class sparsearray
/*** 稀疏陣列轉原始的二維陣列的思路
* step1:先讀取稀疏陣列的第一行,根據第一行的資料,建立原始的二維陣列,比如上面的 chessarr2 = int [11][11]
* step2: 再讀取稀疏陣列後幾行的資料,並賦給原始的二維陣列即可.
* @param sparsearr
*/public static void sparsetoorigin(int sparsearr)
system.out.println("恢復後的稀疏陣列~~~~~~");
for (int rows : chessarr2)
system.out.println();}}
/***二維陣列轉稀疏陣列
* 1. 遍歷原始的二維陣列,得到有效資料的個數 sum
* 2. 根據sum 就可以建立 稀疏陣列 sparsearr int[sum + 1] [3]
* 3. 將二維陣列的有效資料資料存入到 稀疏陣列
*/public static int origintosparse(int chessarr)}}
//step2:根據sum 就可以建立 稀疏陣列 sparsearr int[sum + 1] [3]
int sparsearrays = new int[sum + 1][3];
//step3:將二維陣列的有效資料資料存入到稀疏陣列
sparsearrays[0][0]=11;
sparsearrays[0][1]=11;
sparsearrays[0][2]=sum;
int count =0;
for (int i = 0; i < 11; i++) }}
system.out.println("得到的稀疏陣列為~~~~~~~~~~");
for (int i = 0; i < sparsearrays.length; i++)
return sparsearrays;
}public static int createoriginarr()
system.out.println();
}return chessarr;}}
稀疏二維陣列
package com.atguigu.sparsearray public class sparsearray system.out.println 計算原始二維陣列裡面非0值的個數,並輸出 int sum 0 for int is chessarr system.out.println sum ...
二維陣列與稀疏陣列
一維數00組的集合,二維陣列可以由多個一維陣列構成 二維陣列的建立 int a 推薦使用 int a2 直接建立 int a new int x 可以不進行定義也可以定義 int a int a new int,二維陣列的迭代 int b1 newint for int i 0 i 實現 packa...
二維陣列與稀疏陣列
二維陣列 陣列中的每乙個元素又是乙個陣列 宣告int a public static void main string args 0 1 2 0 1 2 0 1 2 0 1 2 newint 3 建立乙個長度為3的二維陣列,其中每乙個一維陣列的值為空 null 二維陣列遍歷 迴圈每次取出二維陣列中的...