在使用二維陣列儲存資料時,如果儲存的非預設值(比如 int 型別的預設值是0)的個數少於整個二維陣列的大小時,就可以考慮使用稀疏陣列來減少記憶體使用空間
稀疏陣列的第一維是普通陣列的一維長度
二維長度
和非預設元素個數
;其他維是非預設元素的一維下標
二維下標
和元素值
獲取普通陣列的一維和二維的長度,以及非預設元素的個數
新建稀疏陣列(一維長度是1 + 非預設元素個數,二維長度是3)
遍歷普通陣列,給稀疏陣列賦值
獲取稀疏陣列的第一維,即可得到普通陣列的 一維長度 二維長度 非預設元素的個數
新建普通陣列,並初始化預設值
遍歷稀疏陣列,賦值非預設元素
class
sparearray
int len = array.length;
// 一維長度if(
0== len)
int length = array[0]
.length;
// 二維長度if(
0== length)
int count =0;
for(
int i =
0; i < len; i++)}
}int
sparearray =
newint[1
+ count][3
];sparearray[0]
[0]= len;
// 一維長度
sparearray[0]
[1]= length;
// 二維長度
sparearray[0]
[2]= count;
// 非預設元素個數
int index =0;
for(
int a =
0; a < len; a++)}
}return sparearray;
}/**
* 將稀疏陣列恢復回普通的二維陣列
*/public
static
int[
]recover
(int
sparearray,
int defaultvalue)
int len = sparearray[0]
[0];
int length = sparearray[0]
[1];
int count = sparearray[0]
[2];
int[
] array =
newint
[len]
[length]
;for
(int i =
0; i < len; i++)}
for(
int a =
1; a <= count; a++
)return array;
}}
資料結構 稀疏陣列
資料結構 當乙個陣列中大部分元素為同乙個值時可以使用稀疏陣列來存該陣列 二維陣列轉稀疏陣列 稀疏陣列轉回原始二維陣列 稀疏陣列 public class sparsearray system.out.println 將二維陣列轉成稀疏陣列 1.先遍歷得到非0資料的個數 int sum 0 for i...
資料結構 稀疏陣列
當乙個陣列中大部分元素為 或者為同乙個值的陣列時,可以使用稀疏陣列來儲存該陣列。這樣就可以不用記錄很多沒有意義的資料。它是對二維陣列的一種優化 壓縮了二維陣列 稀疏陣列的處理方法是 稀疏陣列的應用場景 1.使用稀疏陣列來儲存二維陣列 大部分數字為0 棋盤,地圖 2.把稀疏陣列存檔,並且可以恢復為原來...
資料結構 稀疏陣列
package com.hadwinling.sparearray public class sparearray system.out.println 將二維陣列轉為稀疏陣列的思路 1.先遍歷二維陣列得到 非0 的資料個數 int sum 0 for int i 0 i chessarrary.l...