- 4
- 0
- 约7.78千字
- 约 52页
- 2018-08-06 发布于江苏
- 举报
第5章多维数组和广义表格
(1)按照A的列序进行转置 由于A的列即为B的行,在a.data中,按列扫描,则得到的b.data必按行优先存放。但为了找到A的每一列中所有的非零的元素,每次都必须从头到尾扫描A的三元组表(有多少列,则扫描多少遍),这时算法描述如下: void transpose(sparmatrix a,sparmatrix b) {b.rows=a.cols; b.cols=a.rows; b.terms=a.terms; if (b.terms0){int bno=0; for (int col=0; cola.cols; col++)//按列号扫描 for(int ano=0;anoa.terms;ano++)//对三元组表扫描 if (a.data[ano].j==col) //进行转置 { b.data[bno].j=a.data[ano].i; b.data[bno].i=a.data[ano].j; b.data[bno].v=a.data[ano].v; bno++;}}} 分析这个算法,主要工作在col和ano二重循环上,故算法的时间复杂度为 O(a.cols*a.terms)。而通常的m?n阶矩阵转置算法可描述为: for(col=0; coln; col++) for (row=0;rowm;row++) b[
原创力文档

文档评论(0)