若有下面這樣乙個矩陣
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...