引入:在棋盤遊戲中經常會遇到,保留此局或者覆盤,此時我們一般會使用乙個二維陣列將棋盤的資訊儲存起來,但是針對那些二維陣列中含很多0(無意義)的情況就需要使用,稀疏陣列壓縮
當乙個陣列大部分元素為0,或同乙個值時,就可使用稀疏陣列
問題:這種真的有用嗎,以上圖為例,77=49 降到 38=24,但如果有效值再多一倍那它的壓縮就完全不存在了,這時有效值也只佔16/49,大概1/3,這裡就涉及到有效值佔的比例了
二維陣列轉sparsearray思路:
1. 遍歷二維陣列,找到有效資料的個數sum
2. 根據sun建立sparsearray,int[sum+1][3]//+1是因為第一行的三個值分別為原始二維陣列的行數,列數,有效值個數
3. 將二維陣列的每個有效值依次填入sparsearray
4.sparsearray轉二維陣列
1. 根據sparsearray的第一行建立二維陣列 int[sparsearray[0][0]][sparsearray[0][1]]
2. 再將每個值匯入到二維陣列的對應位置
public class sparsearray
}doublearr[1][2]=1;
doublearr[2][3]=2;
doublearr[2][4]=2;
doublearr[2][7]=2;
for (int i = 0; i <11 ; i++)
system.out.println();
}//二維陣列轉為sparsearr
int sum=0;
for (int i = 0; i <11 ; i++) }}
int sarr = new int[sum+1][3];
sarr[0][0] = 11;
sarr[0][1] = 11;
sarr[0][2] = sum;
int start=1;
for (int i = 0; i <11; i++) }}
for (int i = 0; i
資料結構 稀疏陣列
資料結構 當乙個陣列中大部分元素為同乙個值時可以使用稀疏陣列來存該陣列 二維陣列轉稀疏陣列 稀疏陣列轉回原始二維陣列 稀疏陣列 public class sparsearray system.out.println 將二維陣列轉成稀疏陣列 1.先遍歷得到非0資料的個數 int sum 0 for i...
資料結構 稀疏陣列
當乙個陣列中大部分元素為 或者為同乙個值的陣列時,可以使用稀疏陣列來儲存該陣列。這樣就可以不用記錄很多沒有意義的資料。它是對二維陣列的一種優化 壓縮了二維陣列 稀疏陣列的處理方法是 稀疏陣列的應用場景 1.使用稀疏陣列來儲存二維陣列 大部分數字為0 棋盤,地圖 2.把稀疏陣列存檔,並且可以恢復為原來...
資料結構 稀疏陣列
package com.hadwinling.sparearray public class sparearray system.out.println 將二維陣列轉為稀疏陣列的思路 1.先遍歷二維陣列得到 非0 的資料個數 int sum 0 for int i 0 i chessarrary.l...