稀疏陣列與二維陣列的轉換

2021-10-14 07:35:49 字數 1726 閱讀 4176

稀疏陣列的使用場景:當乙個陣列中大部分元素為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...