矩陣專題之二 稀疏矩陣的壓縮儲存

2021-06-05 13:01:46 字數 1060 閱讀 6175

對於一般矩陣我們知道,矩陣中有很多的元素是非零的,所以無法避免的要耗費空間來儲存了

但是對於一些特殊矩陣我們要盡量避免記憶體的浪費,例如接下來的稀疏矩陣!              

以上的矩陣我們稱為稀疏矩陣,因為矩陣中有很多的零元,如果我們可以避免0元的儲存將節約大量的儲存空間,尤其是對於更加龐大的矩陣來說,更可以很好的避免記憶體空間

在資料結構中我們定義三元組順序表來儲存稀疏矩陣中的非零元,結構如下:

//定義結構體

#define maxsize 100

typedef struct

triple;

//矩陣的順序鍊錶

typedef struct

tsmatrix;

triple這個結構體是用來儲存每個元素的,而tsmatrix是用來儲存矩陣中的非零元的。首先我們可以運用一般的解法,就是一次掃瞄每一列的元素,然而這樣的話演算法的時間複雜度將為o(n^2),

然而又有一種能讓複雜度將為o(n)的方法,那就是定義兩個一維陣列int *num,*cpot;

num表示矩陣每一列中的非零元個數,cpot表示每一列中非零元第一數在三元組中的位置,他們的關係如下:

演算法完整具體**如下: 

#include#include//定義結構體

#define maxsize 100

typedef struct

triple;

//矩陣的順序鍊錶

typedef struct

tsmatrix;

int fastconvert(tsmatrix m,tsmatrix *t);

int main(int argc,char* argv)

} return 1;

}

對稱矩陣 稀疏矩陣的壓縮儲存

對稱矩陣 稀疏矩陣的壓縮儲存 1 對稱矩陣的壓縮儲存 對稱矩陣顧名思義就是符合行和列的個數相同,並且矩陣中儲存的資料上三角和下三角中對應位置上的元素值是相等的。為了能夠減少儲存的空間,我們可以只儲存上三角矩陣 或者下三角矩陣中的元素,這樣就能夠極大地節省空間的浪費。下面是對稱矩陣的示列 假設對稱矩陣...

稀疏矩陣的壓縮儲存

include include using namespace std templateclass sparsematrix sparsematrix 訪問稀疏矩陣中row行col中的元素 t access int row,int col it return invalid for size t i...

稀疏矩陣的壓縮儲存

稀疏矩陣的壓縮儲存 實現稀疏矩陣壓縮儲存,並實現矩陣轉置和求和。輸入矩陣時,首先需要輸入非零元素的個數,然後分別輸入矩陣的 行號,列號和值。輸完2個矩陣後,自動進行計算第乙個矩陣的轉置以及兩個矩陣的和。例如 輸入如下 100 90 5 矩陣的行數為100,列數為90,共5個非零元素。1 10 100...