【发布时间】:2016-10-27 21:00:30
【问题描述】:
我用 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;
}
任何想法或建议将不胜感激。谢谢。
【问题讨论】:
-
Stack Overflow 专注于不工作的代码。如果您可以自信地对Code Review On-Topic Check 中的所有 6 个问题回答“是”,那么您可以在Code Review 上提问。
-
您发布的代码的计算复杂度为
O(N^2)。在不知道矩阵中包含的数据结构的情况下,我无法看到如何改进它。提高计算复杂度的策略将在很大程度上取决于人们可以对矩阵的内容做出的假设。
标签: c matrix sparse-matrix representation