我正在一个编程的难题,我有点困惑。问题是计算二维平面上磁盘的交点数。 x总是0,y是数组中的索引。该元素是存储在数组元素中的半径。性能很好,元素数量少,元素数量少,但拥有大量像10,000,000元这样的元素性能很差。我目前使用2嵌套循环来处理数组。优化阵列处理循环
我将不胜感激任何人可能会给的帮助。我受限于给予我的数据结构,无法更改它们。由于我正在处理整数和中心点在同一个y轴上,所以计算圆盘是否与另一个圆心相交。
下面是代码:
int number_of_intersections (int A[], int n)
{
int base = 0;
int inc = 0;
int intersect = 0;
int maxrad = 0;
int x;
if (n>1)
{
for (base=0;base<(n-1);base++)
{
inc = base+1;
do
{
if (inc - base <= (A[base] + A[inc]))
{
intersect ++;
if (!(intersect^10000000))
{
return -1;
}
}
inC++;
} while (inc < n);
}
}
return intersect;
}
谢谢您的时间
对于初学者来说,不要写``如果((^相交1000000)!)。只要写'if(intersect == 10000000)`。它更清晰。另外,你能否在这里提供更多的上下文和例子?你有什么尝试?为什么它不工作? – templatetypedef 2011-01-09 06:01:51