相同for循环中的比较次数是否会影响时间复杂度?

时间:2017-12-14 03:35:36

标签: javascript algorithm performance time-complexity

在示例练习中,我要检查数组中的所有元素是否彼此相同。这个问题不是关于最有效的方法。相反,它是关于这两个解决方案。

 for(var i=0; i < set.length-1; i++)
  {
    if (set[i] != set[i+1]) // could have compared all elements to the firstelement instead of switching
    {
     isTrue=false;
    }

  }

以上算法将每个索引与索引进行比较。

var firstIndex=set[0];
for(var i=0; i < set.length-1; i++)
{
  if(set[i] != firstIndex)
    {
        isTrue=false;
    }
 }

此算法将当前索引与第一个索引进行比较。虽然这些算法至少是O(N)。比较中的差异是否会影响时间/空间的复杂性?

2 个答案:

答案 0 :(得分:0)

空间复杂性:没有变化,因为您没有使用任何额外的变量/数据结构(第二个片段中的firstIndex未被考虑,因为它需要恒定的空间)。

时间复杂性:很少或没有变化。在这两个片段中,您只进行了一次比较,但第一个片段的速度会慢一些,因为与直接变量访问相比,数组访问速度较慢。

答案 1 :(得分:0)

好吧让我们清楚

两者的时间复杂度为O(n)。空间复杂度为O(1)

数组索引访问等等对Big-O timne复杂性没有影响。

虽然这些算法至少是O(N)。

这些O(n)并非至少。

您可以通过执行

等操作来改善运行时而非时间复杂性
if(set[i] != firstIndex)
{
    isTrue=false;
    break; 
}