惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
SegmentFault 最新的问题
V
Visual Studio Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
量子位
月光博客
月光博客
阮一峰的网络日志
阮一峰的网络日志
T
Tailwind CSS Blog
GbyAI
GbyAI
爱范儿
爱范儿
Y
Y Combinator Blog
宝玉的分享
宝玉的分享
有赞技术团队
有赞技术团队
罗磊的独立博客
Recent Announcements
Recent Announcements
博客园 - 司徒正美
M
MIT News - Artificial intelligence
小众软件
小众软件
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
B
Blog RSS Feed
A
About on SuperTechFans
Hugging Face - Blog
Hugging Face - Blog
Apple Machine Learning Research
Apple Machine Learning Research
雷峰网
雷峰网

博客园 - powerlc

mobile WareHouse 项目笔记1 moss 与SAP iView web part 整合 一个合格的程序员该做的事情 IT职场健康杀手与应对宝典 (虽然是IT职场,可是对于常上网的ggmm也是很有用的) 常用CASE工具介绍 ZZ 北京知名百货公司宰客内幕 开发工程师人生之路 (推荐) Asp.net中在datagrid中放checkbox控件的全选 - powerlc - 博客园 C#修饰符 c++程序员的常用工具集 10条有益的涉世建议ZZ 算术运算的溢出问题 计算机中的原码、反码和补码 用一条SQL完成数据表的行统计 C#的代理和事件 Repeater导出为excel格式 常见算法基础之排序 约瑟夫c++ ZZ JavaScript实用的一些技巧 - powerlc - 博客园
算法 ZZ
powerlc · 2005-08-26 · via 博客园 - powerlc

★稀疏矩阵的快速转置算法:
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;
}

posted on 2005-08-26 21:56  powerlc  阅读(437)  评论(0)    收藏  举报

刷新页面返回顶部