稀疏矩陣 壓縮儲存 列轉置法 一次定位快速轉置法

2021-07-24 00:23:49 字數 1375 閱讀 4200

稀疏矩陣的壓縮儲存

壓縮儲存值儲存極少數的有效資料。使用三元組儲存每乙個有效資料,三元組按原矩陣中的位置,以行優先順序先後順序依次存放。

壓縮儲存:行優先一行一行掃 有效資料存入以為矩陣_arr

列轉置法 : 從前向後遍歷壓縮矩陣,先找列號為0的存入 轉置矩陣的壓縮矩陣.然後從前向後找列號為1的 。。。直到轉置矩陣的壓縮矩陣大小和 原矩陣的一樣大 這時就找完了

時間複雜度為    o(原矩陣列數 * 壓縮矩陣長度)

一次定位快速轉置法:

設定兩個輔助矩陣 rowcounts 和 rowstart

rowcounts 記錄 原矩陣每列的有效元素元素的個數 (這裡row指的是轉置矩陣的行 rowcount指的也就是轉置矩陣 的 行有效元個數)

rowstart 記錄的是  原矩陣 每列首個有效元素 在 轉置矩陣 的壓縮矩陣中的座標 (也就是 轉置矩陣 的 每行首個有效元素 在 轉置矩陣 的壓縮矩陣

中的 座標)

rowstart[n]可以由 rowcount[n-1]和上乙個rowstart[n-1]求得 n>0

rowstart[0] = 0;

利用 rowstart 可以實現 由 原矩陣 的壓縮矩陣元素 到 轉置矩陣的壓縮矩陣 的一次快速定位

如:#define _crt_secure_no_warnings 1

#include

#include

#include

#include

using namespace std;

/***

*******************/

template

struct triple

;template

class sparesmatrix

;template

sparesmatrix::sparesmatrix()

{}template

sparesmatrix::sparesmatrix(const t* array, size_t row, size_t col, const t& invalid)

template

template

sparesmatrixsparesmatrix::transport()

template

void testsparsematrix()

int main()

本文出自 「城市獵人」 部落格,請務必保留此出處

稀疏矩陣的列序遞增法和一次定位快速轉置法

稀疏矩陣 矩陣中大多數元素為0的矩陣,從直觀上講,當非零元素個數低於總元素的30 時,這樣的矩陣為稀疏矩陣。如 int array 6 5 稀疏矩陣的壓縮儲存 使用三元組儲存每乙個有效資料,三元組按原矩陣中的位置,以行優先順序先後順序依次存放。矩陣的轉置 將原矩陣的行 列對換,也就是將 i j 和 ...

稀疏矩陣的壓縮儲存及轉置

稀疏矩陣的壓縮儲存及轉置 include using namespace std 三元組順序表的型別定義 define itemsize 100 typedef struct int row,col int item thnode typedef struct thnode data data 0 ...

稀疏矩陣的壓縮儲存與轉置

稀疏矩陣 m n的矩陣,矩陣中有效值的個數 遠小於無效值的個數,且這些資料的分布沒有規律。1 0 3 0 5 0 0 0 0 0 0 0 0 0 0 2 0 4 0 6 0 0 0 0 0 0 0 0 0 0 稀疏矩陣的壓縮儲存 壓縮儲存值儲存極少數的有效資料。使用 三元組儲存每乙個有效資料,三元組...