二維陣列轉換為稀疏陣列
* 二維陣列轉換稀疏陣列的思路:
* 1.遍歷原始的二維陣列,得到有效資料的個數sum(sum有多少個,稀疏陣列就有sum+1行)
* 2.根據sum的個數建立稀疏陣列sparsearray int[sum + 1][3](列為固定值,行不確定)
* 3.將二維陣列的有效資料放入稀疏陣列中
* 0 0 0 1 0
* 2 0 0 0 3
* 0 5 0 0 0
* 0 0 6 0 0
* */
//建立乙個原始的4行5列二維陣列
int[
] chessarray =
newint[4
][5]
; chessarray[0]
[3]=
1;chessarray[1]
[0]=
2;//chessarray[1][4] = 3;最後結果只有效值有5個,但是結果只輸出四個這個3無法輸出
chessarray[2]
[1]=
5;chessarray[3]
[2]=
6;//遍歷原始的二維陣列,並記錄值有幾個
for(
int[
] row : chessarray)
system.out.
println()
;}
//計算有效值有幾個
//如果sum = 0 則會從0開始算結果為4,但是個數卻還是有5個,所以這裡就從1開始計數
int sum =0;
for(
int i =
0; i < chessarray.length; i++)}
} system.out.
println
("有效值的個數為:"
+ sum)
;
//將有效值放入稀疏陣列中
//建立稀疏陣列
int[
] sparsearray =
newint
[sum][3
];/** * 向稀疏陣列中新增固定資料(陣列從0開始計算)
* @auther [0][0] = 4 表示稀疏陣列第一列為行數,行數為4
* @auther [0][1] = 5 表示稀疏陣列第二列為列數,列數為5
* @auther [0][2] = sum 表示稀疏陣列第三列為value,值為sum
* */
sparsearray[0]
[0]=
4;sparsearray[0]
[1]=
5;sparsearray[0]
[2]= sum;
/** * @auther index 陣列下標
* */
int index =0;
for(
int i =
0; i < chessarray.length; i++)}
}
//輸出稀疏陣列
for(
int i =
0; i < sparsearray.length; i++
))
最後結果
這裡存在乙個問題,,把初始陣列定義為乙個一般陣列時「2 0 0 0 0 3」 這一行中最後這3始終無法識別,有效值依然為5,但是稀疏陣列中這3確實是沒有,整體思路很清楚唯一就是這個小點無法解決,看了很多篇**大家的都是差不多,通過修改**重新測試後才發現稀疏陣列只能將初始的二維陣列定義為矩陣!!!
所以修改後的**如下:
/**
* 二維陣列轉換稀疏陣列的思路:
* 1.遍歷原始的二維陣列,得到有效資料的個數sum(sum有多少個,稀疏陣列就有sum+1行)
* 2.根據sum的個數建立稀疏陣列sparsearray int[sum + 1][3](列為固定值,行不確定)
* 3.將二維陣列的有效資料放入稀疏陣列中
* 0 0 0 1
* 2 0 0 3
* 0 5 0 0
* 0 0 6 0
* */
//建立乙個原始的4行4列二維陣列
int[
] chessarray =
newint[4
][4]
; chessarray[0]
[3]=
1;chessarray[1]
[0]=
2;chessarray[1]
[3]=
3;chessarray[2]
[1]=
5;chessarray[3]
[2]=
6;//遍歷原始的二維陣列,並記錄值有幾個
for(
int[
] row : chessarray)
system.out.
println()
;}system.out.
println()
;
int sum =0;
for(
int i =
0; i < chessarray.length; i++)}
} system.out.
println
("有效值的個數為:"
+ sum)
;
//將有效值放入稀疏陣列中
//建立稀疏陣列
int[
] sparsearray =
newint
[sum +1]
[3];
/** * 向稀疏陣列中新增固定資料(陣列從0開始計算)
* @auther [0][0] = 4 表示稀疏陣列第一列為行數,行數為4
* @auther [0][1] = 4 表示稀疏陣列第二列為列數,列數為4
* @auther [0][2] = sum 表示稀疏陣列第三列為value,值為sum
* */
sparsearray[0]
[0]=
4;sparsearray[0]
[1]=
4;sparsearray[0]
[2]= sum;
/**
* @auther index 陣列下標
* */
int index =0;
for(
int i =
0; i < chessarray.length; i++)}
}//輸出稀疏陣列
for(
int i =
0; i < sparsearray.length; i++
)
一維陣列轉換為二維陣列
一維陣列 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 二維陣列 1,2,3,4,5 00,01,02,03,04 6,7,8,9,10 10,11,12,13,14 11,12,13,14,15 20,21,22,23,24 16,17,18...
稀疏陣列與二維陣列的轉換
稀疏陣列的使用場景 當乙個陣列中大部分元素為0,或者為同乙個值的時候,可以使用稀疏陣列來儲存該陣列。比如這樣乙個陣列,裡面除了1和2之外其餘全為0。比如下面這張圖 左邊二維陣列為6行7列,其中有8個非零的值,所以將 6,7,8 存在第0行 後面開始記錄原二維陣列有效資料的位置,比如有效資料22,其位...
稀疏陣列(與二維陣列互相轉換)
二維陣列的省記憶體的儲存方法,一般是n行3列,三列分別為行,列,值。二維陣列轉稀疏陣列 1.遍歷整個二維陣列,檢視有多少個有效數字 2.根據有效數字的個數,建立稀疏陣列 3.遍歷二維陣列,將有效的數字放入稀疏陣列中稀疏陣列轉二維陣列 1.根據稀疏陣列第一行建立空二維陣列 2.讀取稀疏陣列後幾行資料,...