c# - 我可以有一个更快的嵌套循环来降低算法复杂度吗?
问题描述
我有一个新手问题。
假设我有以下简单的嵌套循环,其中m
和n
不一定相同,但都是非常大的数字:
x = 0;
for (i=0; i<m; i++)
{
for (j=0; j<n; j++)
{
delta = CalculateDelta(i,j);
x = x + j + i + delta;
}
}
现在我有了这个:
x = 0;
for (i=0; i<m; i++)
{
for (j=0; j<n; j++)
{
delta = CalculateDelta(i,j);
x = x + j + i + delta;
j++;
delta = CalculateDelta(i,j);
x = x + j + i + delta;
}
}
规则:由于这个增量计算,我确实需要遍历循环的所有元素。
我的问题是:
1)第二种算法比第一种算法快,还是一样?我有这个疑问,因为对我来说第一个算法的复杂度为 O(m * n),而第二个算法的复杂度为 O(m * n/2)。还是不需要较低的复杂性使其更快?
2)有没有其他方法可以在没有类似 a 的情况下加快速度Parallel. For
?
3)如果我使用 a Parallel. For
,它真的会更快吗,因为我可能需要对x
变量进行同步锁定?
谢谢!
解决方案
推荐阅读
- java - 具有嵌套属性标准支持的 Spring Data TypedSort
- scala - 读取 Parquet 文件 Spark Scala
- asp.net-core - 在 ASP .NET 核心上进行数学运算时出现现场错误
- java - java - 如何从Java中的JCTree获取父树对象?
- c# - scriptcs 总是给出一个错误,说我应该使用系统库来终止程序
- java - 如何通过编辑配置文件在eclipse中初始化tomcat服务器
- python - Killall Postgres 使用 Heroku Scheduler 卡住连接
- angular - 使用 ViewEncapsulation.ShadowDom 元素包裹的元素内的 cdkScrollable 和 cdkDropList 问题
- javascript - 检测用户何时使用 React js 滚动到 div 的底部取决于屏幕/chrome 分辨率
- typescript - facebook SDK 嵌入式帖子仅在硬重新加载时显示