對於二維陣列中如果有多數資料為相同的值,少數為有效值的陣列,可以通過稀疏陣列進行重新儲存,較少空間占用,後面可以通過這個稀疏陣列恢復之前的二維陣列
稀疏陣列的arrays[0][0]儲存行的數量 arrays[0][1]儲存列的數量 arrays[0][2]儲存有效值的數量
arrays[1][0] 儲存第乙個有效值的橫座標 arrays[1][1]儲存第乙個有效值的縱座標 arrays[1][2]儲存改有效值的數 後面依次類推
package sparsearr;
public
class
sparsearray
system.out.
println()
;}//將二維陣列轉換為稀疏陣列
//1、先遍歷二維陣列,得到非0資料的個數
int sum =0;
for(
int i=
0; i//2、建立對應的稀疏陣列
int[
] sparsearr =
newint
[sum+1]
[3];
//給稀疏陣列賦值
sparsearr[0]
[0]= chessarr1.length;
sparsearr[0]
[1]= chessarr1[0]
.length;
sparsearr[0]
[2]= sum;
//遍歷二維陣列,將非0的值存放到sparsearr中
int count =0;
//計數器
for(
int i=
0;i}//輸出稀疏陣列的形式
system.out.
println()
; system.out.
println
("得到稀疏陣列為: ");
for(
int i=
0; i) system.out.
println()
;//稀疏陣列 --》 恢復成原來的二維陣列
//1、先讀取稀疏陣列的第一行,根據第一行的資料,建立原始的二維陣列,比如上面的chessarr2 = int[11][11];
//2、再讀取稀疏陣列的後幾行資料,並賦值給原始的二維陣列即可
//1.先讀取稀疏陣列的第一行,根據第一行的資料,建立原始的二維陣列,比如上面的chessarr2 = int[11][11];
int[
] chessarr2 =
newint
[sparsearr[0]
[0]]
[sparsearr[0]
[1]]
;//輸出恢復後的二維陣列
system.out.
println()
; system.out.
println
("恢復後的二維陣列");
//2.再讀取稀疏陣列的後幾行資料,並賦值給原始的二維陣列即可
for(
int i=
1; i)for
(int
row : chessarr2)
system.out.
println()
;}}}
稀疏陣列,稀疏矩陣概念
稀疏矩陣 矩陣中非零元素的個數遠遠小於矩陣元素的總數,並且非零元素的分布沒有規律,通常認為矩陣中非零元素的總數比上矩陣所有元素總數的值小於等於0.05時,則稱該矩陣為稀疏矩陣 sparse matrix 該比值稱為這個矩陣的稠密度。稀疏陣列 稀疏陣列可以看做是普通陣列的壓縮,但是這裡說的普通陣列是值...
稀疏陣列的實現
當陣列中大部分的內容值都未被使用 或都為零 在陣列中僅有少部分的空間使用,造成記憶體空間的浪費。為了節省記憶體空間,並且不影響陣列中原有的內容值,我們可以使用稀疏陣列去壓縮資料。稀疏陣列的處理方法是 記錄陣列一共有幾行幾列,有多少個不同的值。把具有不同值的元素的行列及值記錄在乙個小規模的陣列中,從而...
陣列轉稀疏陣列
針對於陣列轉稀疏陣列 壓縮 public static void main string args system.out.println system.out.println 稀疏陣列 將二維陣列轉換為稀疏陣列 先遍歷二維陣列 得到非0資料的個數 記錄非0資料 int sum 0 for int i...