一种将代码运行时间从O(n ^ 2)减少到更少

时间:2018-05-06 13:15:37

标签: c

我正在寻找改进以下代码的方法,包括性能和产生运行时错误的事实。

这段代码创建了一个新的数组B(大小为n * n),我有一个循环来查找B元素的XOR并输出结果。

for(int i=0;i<n;i++){
  for(int j=0;j<n;j++){
    b[(i*n)+j+1]=a[i+1]+a[j+1];
  }
}
for(int i=1;i<=len;i++{
 xor=xor^b[i];
}

1 个答案:

答案 0 :(得分:1)

你需要检查你的数组是从0还是1开始,这可能是你早期错误的真正原因,因为你的索引可能超过了数组的声明大小。

就表现而言,计算指数的乘数不是一个良好的开端

int b_index = 0;
for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
        b[b_index++] = a[i]+a[j];
    }
}
然而,阅读整个问题,&#39;&#39;数组根本不需要:

int xor = 0;
for (int i = 0; i < n; i++) {
   for (int j = 0; j < n; j++) {
      xor ^= (a[i]+a[j]);
   }
}