當陣列中大部分的內容值都未被使用(或都為零),在陣列中僅有少部分的空間使用,造成記憶體空間的浪費。為了節省記憶體空間,並且不影響陣列中原有的內容值,我們可以使用稀疏陣列去壓縮資料。
稀疏陣列的處理方法是:
記錄陣列一共有幾行幾列,有多少個不同的值。
把具有不同值的元素的行列及值記錄在乙個小規模的陣列中,從而縮小程式的規模
稀疏陣列共有3列,第一行記錄的是原陣列的行數,列數,有效資料的個數
}//將二維陣列轉化為稀疏陣列
//1.先遍歷二維陣列,得到非0的資料的個數
int sum = 0;
for (int i = 0; i < 11; i++) }}
system.out.println("二維陣列中非0的資料個數 = " + sum);
//2.建立稀疏陣列
int sparsearr2 = new int[sum + 1][3];
//給稀疏陣列賦值
sparsearr2[0][0] = 11;
sparsearr2[0][1] = 11;
sparsearr2[0][2] = sum;
//遍歷二維陣列,將非0的值存入到sparsearr2中
int count = 0; //用於記錄是第幾個非0資料
for (int i = 0; i < 11; i++) }}
//列印稀疏陣列
system.out.println();
system.out.println("稀疏陣列為:");
for (int i = 0; i < sparsearr2.length; i++)
system.out.println();
// 稀疏陣列存入檔案中
file file = new file("e:\\a.txt");
fileoutputstream fileoutputstream = null;
try
fileoutputstream.write(stringbuilder.tostring().getbytes());
} catch (ioexception e) finally catch (ioexception e)
}system.out.println("從檔案中讀取的資訊為:");
// 從檔案中讀取陣列資訊
filereader fr = null;
bufferedreader br = null;
int sparsearr3 = new int[4][3];
try
} catch (ioexception e) finally
if (fr != null)
} catch (ioexception e)
}system.out.println("從檔案讀取的稀疏陣列為:");
for (int i = 0; i < sparsearr3.length; i++)
system.out.println();
}//將稀疏陣列恢復為原始的二維陣列
//1. 先讀取稀疏陣列的第一行,根據第一行的資料,建立原始的二維陣列,比如上面的 chessarr2 = int [11][11]
//2. 再讀取稀疏陣列後幾行的資料,並賦給 原始的二維陣列 即可.
system.out.println("恢復為原始的二維陣列為:");
//先讀取稀疏陣列的第一行,根據第一行的資料,建立原始的二維陣列
int chessarr2 = new int[sparsearr3[0][0]][sparsearr3[0][1]];
//讀取稀疏陣列後幾行的資料
for (int i = 1; i < sparsearr3.length; i++)
//輸出恢復後的二維陣列
for (int row : chessarr2)
system.out.println();}}
}
稀疏陣列的實現過程
首先把乙個大陣列內容遍歷然後提取行和列以及資料建立新的陣列三行n 1列n是資料將資料存入就是訪問 package com.sparsearray public class sparsearray system.out.println 將二維陣列轉化稀疏陣列 1.先遍歷二維陣列 得到非零的個數 int...
稀疏陣列,稀疏矩陣概念
稀疏矩陣 矩陣中非零元素的個數遠遠小於矩陣元素的總數,並且非零元素的分布沒有規律,通常認為矩陣中非零元素的總數比上矩陣所有元素總數的值小於等於0.05時,則稱該矩陣為稀疏矩陣 sparse matrix 該比值稱為這個矩陣的稠密度。稀疏陣列 稀疏陣列可以看做是普通陣列的壓縮,但是這裡說的普通陣列是值...
稀疏陣列的用途
對於二維陣列中如果有多數資料為相同的值,少數為有效值的陣列,可以通過稀疏陣列進行重新儲存,較少空間占用,後面可以通過這個稀疏陣列恢復之前的二維陣列 稀疏陣列的arrays 0 0 儲存行的數量 arrays 0 1 儲存列的數量 arrays 0 2 儲存有效值的數量 arrays 1 0 儲存第乙...