因此,我只是想知道在下面的这个简单函数中,将值分配给变量是否会降低运行时效率:

const biggestNumberInArray = (arr) => {
  let biggest = 0;
  for (item of arr) {
    biggest = (item > biggest) ? item : biggest;
  }
  return biggest;
}


在for循环中,每次迭代都会为最大变量分配一个值。因此,如果我改为写:

if (biggest < item) { biggest=item;};


功能会更有效吗?我真的没有什么大问题,这个问题主要是理论上的,我想了解力学的工作原理。

谢谢!

最佳答案

考虑两种观点:


从理论的角度,即考虑渐近复杂性,它没有任何区别。两种算法都将在线性时间-O(n)上运行,因为无论如何您都必须遍历数组。作业需要固定的时间。 if子句也需要固定的时间。一个恒定时间或两个恒定时间仍然是恒定时间。
从实际的角度来看,这可能会有所不同,但可能不相关,尤其是对于大型阵列。对于小型阵列,相对差异可能更相关,但是由于时间很短,因此我们通常不太在意。

09-11 00:36