Loops 避免双for循环

Loops 避免双for循环,loops,data-structures,nested-loops,Loops,Data Structures,Nested Loops,我想知道是否有更好的方法来做到这一点 我在nbody重力模拟中有一个嵌套的循环,其中球列表中的每个球检查所有球,以获得距离/质量,并对球的矢量施加重力 大概是这样的: for(int i = 0; i < balls.size(); i++){ for(int j = 0; j < balls.size(); j++){ balls.get(i).applyForce(balls.get(j)); } } for(int i=0;ii 谢谢,我明白你的

我想知道是否有更好的方法来做到这一点

我在nbody重力模拟中有一个嵌套的循环,其中球列表中的每个球检查所有球,以获得距离/质量,并对球的矢量施加重力

大概是这样的:

for(int i = 0; i < balls.size(); i++){
    for(int j = 0; j < balls.size(); j++){
       balls.get(i).applyForce(balls.get(j));
    }
}
for(int i=0;i
是否有一种不同的数据结构可以帮助我避免双重循环


我知道这是一个非常普遍的问题,我只是想得到一个正确方向的提示。

假设您正在测试一个元素列表,并且它与每个其他元素的关系-您正在谈论一个O(N^2)算法。所以不,不是真的

您可能完成的最佳任务是放弃以前测试过的关系(如果相关)。如果您正在测试“i”与“j”,那么您不必从零开始重新迭代


因此,您可能会在
i+1
开始第二个循环,除非您确实需要测试i->j和j->i

谢谢,我明白你的意思了。但不幸的是,你必须双向检查。