请教大家一个问题,我有一个很大的稀疏矩阵A(n,n), 我要把所有的非零元素提取出来存入vec,个数未知。
因为尺寸比较大,我想对vec使用动态数组,目前我的方法是。
[Fortran] 纯文本查看 复制代码 ncnt = 0 !计数器,非零元素的个数
do i = 1,n
do j = 1,n
if (A(i,j) /=0) then
ncnt =ncnt +1
endif
enddo
enddo
allocate(vec(ncnt))
ncnt = 0
do i = 1,n
do j = 1,n
if (A(i,j) /=0) then
ncnt =ncnt +1
vec(ncnt) = A(i,j)
endif
enddo
enddo
我把A读了两遍,一边用来确定vec的大小,一遍用来赋值。A很大的时候很麻烦,,,
大神们会怎么做呢?
|