稀疏矩陣的快速轉化

2021-06-06 10:31:00 字數 931 閱讀 4063

若有下面這樣乙個矩陣
001

3056

700

如果按照上篇所用的資料結構儲存如下 a:

rowcolvalue

s[0]02

1s[1]03

3s[2]10

5s[3]11

6s[4]12

7 轉換後的 b:

rowcolvalue

s[0]01

5s[1]11

6s[2]20

1s[3]21

7s[4]30

3 設乙個變rowsize[ ](轉化後的)

rowsize[0]=0,rowsize[1]=1,rowsize[2]=2,rowsize[3]=1,rowsize[4]=1

rowstart[i]=rowstart[i-1]+rowsize[i-1];

rowstart[0]=0;rowstart[1]=1,rowstart[2]=2,rowstart[3]=4,rowstart[4]=5;

由上面兩個表我們觀察可以看出。a.s[0]放在b中為b.s[2].此時2正是a.s[0]所在列轉化成行的開始位置rowstart[2]=2;

此時b.s[2].row=a.s[0].col;b.s[2].col=a.s[0].row;

開始位置便是在b中的位置,然後把開始位置後移一位。

具體**如下:

sparematrix fasttranspose()

{ sparematrix b(row ,col,terms);

if(terms>0)

{ int * rowsize=new int[col];

int * start=new int[col];

fill(rowsize,rowsize+col,0);

for(int i=0;i

稀疏矩陣的快速轉置

其實這2個 是要求要在程式的前後計算程式的時間複雜度,但我不懂怎麼弄。期中已過,對資料結構的印象就是,太長,記不住。有些道理明明就是懂,可還是不樂意去做,然後以後就在那後悔,最後說,唉,這就是人生,只能這麼過著了。include define maxsize 12500 typedef struct...

稀疏矩陣的快速轉置

下面歸納一下從不懂到懂的知識 一 稀疏矩陣的壓縮儲存 0 三元組順序表 用結構體 非零元,矩陣 1 課本p98 100是主要內容 2 主要是快速轉置上課沒聽老師講,所以現在好好看了一下。找到了一篇寫的非常清楚的部落格,引用過來方便以後檢視。只看思路的講解,剩餘的自己寫即可 自己之前不懂得地方是 附設...

稀疏矩陣快速轉置

include include typedef structmatrix typedef int spmatrix 100 3 三元陣列別名 spmatrix a,b 建立兩個三元陣列,a為轉置前,b為轉置後 int pos 1000 num 1000 int getthree matrix s,i...