稀疏陣列的使用場景:當乙個陣列中大部分元素為0,或者為同乙個值的時候,可以使用稀疏陣列來儲存該陣列。比如這樣乙個陣列,裡面除了1和2之外其餘全為0。
比如下面這張圖:
左邊二維陣列為6行7列,其中有8個非零的值,所以將【6,7,8】存在第0行
後面開始記錄原二維陣列有效資料的位置,比如有效資料22,其位於原二維陣列的下標為[0][3],所以我們將【0,3,22】作為稀疏陣列的第二個元素,同樣有效資料15,其位於原二維陣列的下標為[0][6],所以【0,6,15】作為稀疏駐足的第三元素。依次類推。
通過上面的方法,我們就可以將乙個[5][6]的二維陣列轉換為乙個[8][2]的陣列。對資料進行了壓縮。
public
static
void
main
(string[
] args)
system.out.
println
("---分割線---");
//另一種列印方式
for(
int[
] is : arr1)
system.out.
println()
;}//將二維陣列轉為稀疏陣列
int num =0;
//記錄二維陣列中有效資料的個數
//遍歷二維陣列,找出有效資料的個數
for(
int i =
0; i <
10; i++)}
}//知道了有效資料的個數,就可以建立稀疏陣列了
int sparsearr[
]=newint
[num +1]
[3];
//給稀疏陣列的第乙個元素賦值
sparsearr[0]
[0]=
10;//二維陣列行數
sparsearr[0]
[1]=
10;//二維陣列列數
sparsearr[0]
[2]= num;
//二維陣列有效資料個數
//遍歷二維陣列,將有效資料存放到稀疏陣列中
int count =0;
//記錄第幾個有效資料
for(
int i =
0; i <
10; i++)}
}//列印稀疏陣列
for(
int[
] is : sparsearr)
//稀疏陣列轉為二維陣列
//建立二維陣列,其下標為稀疏陣列的[0][0],[0][1]
int arr2[
]=newint
[sparsearr[0]
[0]]
[sparsearr[0]
[1]]
;//讀取稀疏陣列中的有效資料,根據行列值賦給二維陣列
for(
int i =
1; i < sparsearr.length; i++
)//列印新的二維陣列
for(
int[
] is : arr2)
}
稀疏陣列(與二維陣列互相轉換)
二維陣列的省記憶體的儲存方法,一般是n行3列,三列分別為行,列,值。二維陣列轉稀疏陣列 1.遍歷整個二維陣列,檢視有多少個有效數字 2.根據有效數字的個數,建立稀疏陣列 3.遍歷二維陣列,將有效的數字放入稀疏陣列中稀疏陣列轉二維陣列 1.根據稀疏陣列第一行建立空二維陣列 2.讀取稀疏陣列後幾行資料,...
稀疏陣列與普通二維陣列的轉換
今天開始更新資料結構與演算法 這是資料結構的第一篇 大神可以無視,小白可以湊合看看,為了給小白看的清楚,裡面加了每一步的演示,複製到ide中即可執行。package learn author yuyi 稀疏陣列的 實現 第一行記錄原陣列幾行幾列,多少個有效值 接下來是所在行列的位置以及值的內容 稀疏...
二維陣列與稀疏陣列
一維數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...