因為稀疏矩陣的有效元素個數較少,所以以行優先的順序把有效元素的資訊封裝在乙個三元組中儲存在順序表裡
#include#includeusing namespace std;
#define m 5
#define n 6
struct tuple
;class sparsematrix
}} _datacount = _array.size();
} //輸出矩陣
void display()
else
}cout << endl;
} cout << endl;
} //普通轉置
sparsematrix transpose()
j++;
}} return tmp; }
//快速轉置
sparsematrix fast_transpose()
for (int i = 0; i < _datacount; i++)
cpot[0] = 0;
for (int k = 1; k < _col; k++)
for (int i = 0; i < _datacount; i++)
}return tmp;
}private:
vector_array;//用順序表儲存三元組
int _row;
int _col;
int _datacount; //順序表中元素的個數
};int main()
, ,
, , };
sparsematrix sm(s, 0);
sm.display();
sparsematrix ct = sm.transpose();
ct.display();
sparsematrix ft = ct.fast_transpose();
ft.display();
cout << endl;
system("pause");
return 0;
}
稀疏矩陣的普通轉置與快速轉置演算法
注意乙個轉置的前提 該順序表是排好序的,即行優先,列其次。這種演算法比較簡單,也很容易想到 對 m.data 從頭至尾掃瞄 第一次掃瞄時,將 m.data 中列號為 1的三元組賦值到 t.data中 第二次掃瞄時,將 m.data 中列號為 2的三元組賦值到 t.data中 依此類推,直至將 m.d...
稀疏矩陣的轉置與快速轉置
假設在m n的矩陣中,有t個元素不為0。令稀疏因子s t m n 通常認為s 0.05時稱為稀疏矩陣。有時為了節省儲存空間,可以對這類矩陣進行壓縮儲存。所謂的壓縮儲存就是,為多個相同的值分配儲存在乙個空間,對零元不分配空間。而稀疏矩陣是只儲存有效值,無效值只分配乙個空間。在這裡我們用乙個順序表vec...
稀疏矩陣的轉置(矩陣轉置和快速轉置)
實現矩陣的轉置 1.將矩陣的行列值相互轉換。2.將每個三元組中的i和j交換。3.重排三元組之間的次序便可實現矩陣的轉置。void transposesmatrix tsmatrix m,tsmatrix t return transposesmatrix快速轉置的原理是 如果能預先確定矩陣m中每一列...