今天剛學乙個稀疏陣列,記錄
首先要獲取原陣列,在此可建立乙個陣列,並且給陣列賦值,在程式中有時可能並不會給陣列所有的位置都賦值,那麼沒有賦值的位置就造成了浪費!!!
int
array =
newint[11
][11]
; array[1]
[2]=
1;array[2]
[3]=
2;array[4]
[5]=
13;array[6]
[7]=
35;
輸出一下陣列:
然後,此時需要獲取陣列中的有效值的個數
int sum =0;
for(
int i =
0; i
)}
//建立乙個稀疏陣列,如下:
// 11 11 4
// 2 3 1
// 3 4 2
// 5 6 13
// 7 7 35
建立乙個稀疏陣列如上,第一行的三個數分別表示原陣列的行數、列數、有效數字個數,下面的依次是每乙個有效個數的行和列及值。
接著,建立乙個稀疏陣列
int
array2 =
newint
[sum+1]
[3];
array2[0]
[0]= array.length;
array2[0]
[1]= array[0]
.length;
array2[0]
[2]= sum;
陣列有sun+1行,3列;
將原陣列中每乙個有效個數的行和列記錄到稀疏陣列中:
int temp =1;
for(
int i =
0; i
}
最後遍歷輸出一下新的陣列.
//稀疏陣列的還原
//建立還原陣列,新陣列的行數是稀疏陣列的第一行第一列的值,列數是稀疏陣列第一行第二列的值
int[
] array3 =
newint
[array2[0]
[0]]
[array2[0]
[1]]
;for
(int i =
1; i < array2.length; i++
)for
(int i =
0; i
) system.out.
println()
;}}}
//原過程**:
package com;
public
class
arraysort
system.out.
println()
;}//稀疏陣列,陣列壓縮方法
system.out.
println
("***************=");
int sum =0;
for(
int i =
0; i
system.out.
println
("原陣列裡的有效值有"
+sum+
"個!!!");
//建立乙個稀疏陣列,如下:
// 11 11 2
// 2 3 1
// 3 4 2
// 5 6 13
// 7 7 35
int[
] array2 =
newint
[sum+1]
[3];
array2[0]
[0]= array.length;
array2[0]
[1]= array[0]
.length;
array2[0]
[2]= sum;
int temp =1;
for(
int i =
0; i
}for
(int i =
0; i
) system.out.
println()
;}//稀疏陣列的還原
//建立還原陣列,新陣列的行數是稀疏陣列的第一行第一列的值,列數是稀疏陣列第一行第二列的值
int[
] array3 =
newint
[array2[0]
[0]]
[array2[0]
[1]]
;for
(int i =
1; i < array2.length; i++
)for
(int i =
0; i
) system.out.
println()
;}}}
稀疏陣列轉換
classname sparsearray author jopenchen date 2020 09 07 19 51 description 稀疏陣列 public class sparsearray system.out.println 陣列變化的記錄數 int recordsum 0 遍歷獲...
稀疏陣列與二維陣列的轉換
稀疏陣列的使用場景 當乙個陣列中大部分元素為0,或者為同乙個值的時候,可以使用稀疏陣列來儲存該陣列。比如這樣乙個陣列,裡面除了1和2之外其餘全為0。比如下面這張圖 左邊二維陣列為6行7列,其中有8個非零的值,所以將 6,7,8 存在第0行 後面開始記錄原二維陣列有效資料的位置,比如有效資料22,其位...
稀疏陣列與普通二維陣列的轉換
今天開始更新資料結構與演算法 這是資料結構的第一篇 大神可以無視,小白可以湊合看看,為了給小白看的清楚,裡面加了每一步的演示,複製到ide中即可執行。package learn author yuyi 稀疏陣列的 實現 第一行記錄原陣列幾行幾列,多少個有效值 接下來是所在行列的位置以及值的內容 稀疏...