Sparsearray稀疏陣列原理及例項詳解

2022-10-04 12:42:10 字數 2585 閱讀 7446

今天覆習下稀疏陣列相程式設計客棧關思想。

問題引入:編寫的五子棋程式中,有存檔退出和續上盤的功能。

如上圖所示二維陣列,大多值是預設值(0),所以記錄大量無意義的資料意義不大,此時可以引入稀疏陣列。

稀疏陣列介紹:當乙個陣列大部分元素為固定值時,可以使用稀疏陣列來儲存類似陣列;

稀疏陣列處理思路:

稀疏陣列記錄二維陣列的行列數以及非預設值數目;

將原始陣列中的非預設值以及其座標記錄在稀疏陣列中,從而減小檔案容量;

public class sparsearray

system.out.println();

}// 將二維陣列轉換為洗漱陣列

// 獲取原始二維陣列非零數目

int sum = 0;

for (int i = 0; i < chessarr1.length; i++) }}

system.out.println("sum = " + sum);

// 建立稀疏陣列

int sparsearr = new int[sum + 1][3];

// 為稀疏陣列賦值

sparsearr[0][0] = chessarr1.length;

sparsearr[0][1] = chessarr1.length;

sparsearr[0][2] = sum;

// 便利原始二維陣列,進行存放

int n = 0;

for (int i = 0; i < chessarr1.length; i++) }}

// 遍歷稀疏數www.cppcns.com組

system.out.println("-------------------------------------------稀疏陣列---------------------------------");

for (int i = 0; i < sparsearr.length; i++)

// 將稀疏陣列還原為原始二維陣列

int chessarr2 = new int[sparsearr[0][0]][sparsearr[0][1]];

for (int i = 1; i < sparsearr.length; i++)

system.out.println("-------------------------------------------恢復後的二維陣列---------------------------------");

for (int row : chessarr1)

system.out.println();}}}

輸出結果如下:

-------------------------------------------原始二維陣列-------------------------------

0 0 0 0 0 0 0 0 0 0 0

0 0 1 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0

0 0 0 2 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0

0 2 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0

sum = 3

-------------------------------------------稀疏陣列---------------------------------

11 11 3

1 2 www.cppcns.com1

3 3 2

5 1 2

-------------------------------------------恢復後的二維陣列---------------------------

0 0 0 0 0 0 0 0 0 0 0

0 0 1 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0

0 0 0 2 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0

0 2 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0

本文標題: sparsearray稀疏陣列原理及例項詳解

本文位址:

稀疏sparsearray陣列

將二維陣列轉成稀疏陣列 1.先遍歷二維陣列 得到非0資料的個數 int sum 0 for int i 0 i 11 i system.out.println sum sum 建立對應的稀疏陣列 int sparsearr new int sum 1 3 給稀疏陣列賦值 sparsearr 0 0 ...

稀疏sparsearray陣列

線性結構常見的有 陣列 佇列 鍊錶和棧 非線性結構包括 二維陣列 多維陣列 廣義表 樹結構 圖結構 編寫的五子棋程式中,有存檔退出和續上盤的功能 分析問題 因為該二維陣列的很多值是預設值 0,因此記錄了很多沒有意義的資料 稀疏陣列。當乙個陣列中大部分元素為 或者為同乙個值的陣列時,可以使用稀疏陣列來...

關於sparseArray稀疏陣列

關於稀疏陣列 二維陣列 轉 稀疏陣列的思路 遍歷 原始的二維陣列,得到有效資料的個數 sum 根據sum 就可以建立 稀疏陣列 sparsearr int sum 1 3 將二維陣列的有效資料資料存入到 稀疏陣列 稀疏陣列轉原始的二維陣列的思路 先讀取稀疏陣列的第一行,根據第一行的資料,建立原始的二...