★稀疏矩阵的快速转置算法:template
<
class
T
>
SpreMatrix
<
T
>
::FastTranspos( )
{ int *rowSize=new int[Cols];//建立辅助数组,记录原数组每列(即新数组每行)的元素个数 int *rowStart=new int[Cols];// 建立辅助数组,记录新数组非零元素在三元组表中的位置 SpreMatrix<T> b(Cols,Rows); b.Rows= Cols; b. Cols = Rows; b.Terms= Terms; if(Terms>0) { for(int i=0;i<Cols; i++) rowSize[i]=0; for(int i=0;i<Terms; i++) rowSize[smArray[i].col]++;// smArray[i]为原数组三元组表数组rowStart[0]=0;//求出非零元素(每行第一个)在新数组三元组表中的位置for(int i=1; i <Cols; i++) rowStart[i]= rowStart[i-1]+ rowSize[i-1];for(int i=0;i<Terms; i++)//填写三元组表{ int j=rowStart[smArray[i].col]; b.smArrary[j].row= smArrary[i].col; b. smArrary[j].col= smArrary[i].row; b. smArrary[j].value= smArrary[i].value; rowStart[smArrary[i].col]++;//同行(新数组中)的下一个元素位置} }delete[] rowSize; delete[] rowStart;return b;}
转载于:https://www.cnblogs.com/powerlc/archive/2005/08/26/223758.html
相关资源:各显卡算力对照表!
转载请注明原文地址: https://win8.8miu.com/read-1486769.html