稀疏陣列(與二維陣列互相轉換)

2021-10-21 02:21:38 字數 1487 閱讀 5454

二維陣列的省記憶體的儲存方法,一般是n行3列,三列分別為行,列,值。

二維陣列轉稀疏陣列:

1. 遍歷整個二維陣列,檢視有多少個有效數字

2. 根據有效數字的個數,建立稀疏陣列

3. 遍歷二維陣列,將有效的數字放入稀疏陣列中

稀疏陣列轉二維陣列:

1. 根據稀疏陣列第一行建立空二維陣列

2. 讀取稀疏陣列後幾行資料,插入二維陣列中

**實現:

package com.datastructure;

public

class

sparsearray

system.out.

print

("\n");

}//將二維陣列轉換為稀疏陣列

//1 遍歷,得到非0個數

int sum =0;

for(

int i =

0; i <

11; i++)}

}//2 建立稀疏陣列

int[

] sparsarr =

newint

[sum+1]

[3];

//第一行

sparsarr[0]

[0]=

11;sparsarr[0]

[1]=

11;sparsarr[0]

[2]= sum;

//輸入值

int count =1;

//用於記錄sparsearr的行

for(

int i =

0; i <

11; i++)}

}//3 輸出稀疏陣列

system.out.

println()

; system.out.

println

("得到的稀疏陣列為~~~");

for(

int i =

0;i< sparsarr.length ;i++

)//將二維陣列轉換回稀疏陣列

//1 新建陣列

int[

] arr_back =

newint

[sparsarr[0]

[0]]

[sparsarr[0]

[1]]

;//2 將有值的位置安回原來的位置

for(

int i =

1; i)//輸出陣列

system.out.

println()

; system.out.

print

("arr_back輸出為~~~\n");

for(

int i =

0;i[0

];i++

) system.out.

println()

;}}}

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

稀疏陣列的使用場景 當乙個陣列中大部分元素為0,或者為同乙個值的時候,可以使用稀疏陣列來儲存該陣列。比如這樣乙個陣列,裡面除了1和2之外其餘全為0。比如下面這張圖 左邊二維陣列為6行7列,其中有8個非零的值,所以將 6,7,8 存在第0行 後面開始記錄原二維陣列有效資料的位置,比如有效資料22,其位...

二維陣列與稀疏陣列

一維數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...

二維陣列與稀疏陣列

二維陣列 陣列中的每乙個元素又是乙個陣列 宣告int a public static void main string args 0 1 2 0 1 2 0 1 2 0 1 2 newint 3 建立乙個長度為3的二維陣列,其中每乙個一維陣列的值為空 null 二維陣列遍歷 迴圈每次取出二維陣列中的...