我用C编写的这段代码需要很长时间才能运行。有没有办法改善它? 我想要做的是将每行的值相加并将值保存在向量中。在此代码中,i1是包含矩阵的行位置,列和关联值的值。 i1没有排序。
while(a < 2*var)
{
for (int c=0; c < 2*var; c++)
{
if (i1[c][0] == a)
{
diag[b] += i1[c][2];
}
}
a = a+1;
b = b+1;
}
任何想法或建议都将不胜感激。谢谢。
答案 0 :(得分:1)
作为BaseModelT2
,您可以简单地使用b = a + const
并将复杂度从O(N 2 )降低到O(N)。
答案 1 :(得分:0)
如果a
和i1[c][0]
是整数类型,您可以将嵌套循环更改为单个循环:
for (int c = 0; c < 2 * var; c++) {
if (i1[c][0] >= a && i1[c][0] < 2 * var) {
diag[b + (i1[c][0] - a)] += i1[c][2];
}
}
b += 2 * var - a;
a = 2 * var;