稀疏數組(sparse array)
ps:數據結構與算法主要根據韓順平老師的課程優化修改+整理。
-
基本介紹
當數組中大部分元素都是同一值時可以使用稀疏數組保存以節省空間。一般用作保存二維數組(棋盤、地圖等)。
-
應用實例
如下二維數組:
0 | 1 | 0 |
---|---|---|
0 | 0 | 0 |
10 | 0 | 0 |
-
關鍵代碼:
//壓縮 //每個結構體對應響應的數值 type ValNode struct { row int col int val int } func main() { //原始二維數組,3*3個元素 var chessMap [3][3] chessMap[0][2] = 1 chessMap[2][0] = 10 var sparseArr []ValNode //記錄規模 valNode := ValNode { row:3, col:3, val:2,//2個使用的值(需要記錄的值) } sparseArr = append(sparseArr,valNode) //記錄具體值 for i,arr := range chessMap { for j,v := range arr { if v != 0{ valNode := ValNode { row:i, col:j, val:arr[j],//使用v的習慣不太好 } sparseArr = append(sparseArr,valNode) } } } //使用數據持久化技術保存稀疏數組 } //解壓:遍歷結構體切片賦值,第一次根據規模創建二維數組,第二次遍歷開始賦值