package com.vg;
public class testsparsearray {
public static void main(string args) {
//建立乙個11*11原始陣列
//0代表沒有棋子,1代表黑棋,2代表白棋
int chessarr1 = new int[11][11];
chessarr1[1][2] = 1;
chessarr1[2][3] = 2;
chessarr1[3][3] = 2;
chessarr1[4][3] = 1;
//輸出原來的陣列
system.out.println("陣列為···");
for(int row:chessarr1) {
for(int data:row) {
system.out.printf("%d\t",data);
system.out.println();
//將二維陣列 轉 稀疏陣列 的思路
//1、先遍歷二維陣列 得到 非0資料的個數
int sum=0;
for(int i=0;ifor(int j=0;jif(chessarr1[i][j]!=0) {
sum++;
system.out.println("sum的值是"+sum);
//2、建立對應的稀疏陣列
int sparsearr = new int[sum+1][3];
//給稀疏陣列賦值
sparsearr[0][0] = 11;
sparsearr[0][1] = 11;
sparsearr[0][2] = sum;
//遍歷二維陣列把值放進來
int count = 0;//
for(int i=0;ifor(int j=0;jif(chessarr1[i][j]!=0) {
count++;
sparsearr[count][0]=i;
sparsearr[count][1]=j;
sparsearr[count][2]=chessarr1[i][j];
//輸出稀疏陣列的形式
system.out.println("得到的稀疏陣列···");
for(int i=0;ifor(int j = 0;jsystem.out.printf("%d\t",sparsearr[i][j]);
system.out.println();
system.out.println();
//將稀疏陣列 --》 恢復成 原始的二維陣列
* 1. 先讀取稀疏陣列的第一行,根據第一行的資料,建立原始的二維陣列,比如上面的 chessarr2 = int [11][11]
2. 在讀取稀疏陣列後幾行的資料,並賦給 原始的二維陣列 即可.
//1. 先讀取稀疏陣列的第一行,根據第一行的資料,建立原始的二維陣列
int chessarr2 = new int[sparsearr[0][0]][sparsearr[0][1]];
//2. 在讀取稀疏陣列後幾行的資料(從第二行開始),並賦給 原始的二維陣列 即可
for(int i=1;ichessarr2[sparsearr[i][0]][sparsearr[i][1]]=sparsearr[i][2];
//輸出恢復後的二維陣列
system.out.println("恢復的二維陣列為···");
for(int i=0;ifor(int j= 0;jsystem.out.printf("%d\t",chessarr2[i][j]);
system.out.println();
稀疏陣列和二維陣列的相互轉換
二維陣列轉化為稀疏陣列 建立乙個原始二維陣列 0表示無子,1表示黑子,2表示白子 int arr newint 11 11 arr 1 2 1 arr 2 3 2 for int arr1 arr system.out.println 得到二維陣列的非0值 int sum 0 for int i 0...
二維陣列與稀疏陣列的相互轉化
package com.weiting.sparsearray public class sparsearray system.out.println 將二維陣列轉化為稀疏陣列 1.遍歷二維陣列得到非零的數字個數 int sum 0 for int i 0 i 11 i system.out.pri...
稀疏陣列與二維陣列的轉換
稀疏陣列的使用場景 當乙個陣列中大部分元素為0,或者為同乙個值的時候,可以使用稀疏陣列來儲存該陣列。比如這樣乙個陣列,裡面除了1和2之外其餘全為0。比如下面這張圖 左邊二維陣列為6行7列,其中有8個非零的值,所以將 6,7,8 存在第0行 後面開始記錄原二維陣列有效資料的位置,比如有效資料22,其位...