在示例练习中,我要检查数组中的所有元素是否彼此相同。这个问题不是关于最有效的方法。相反,它是关于这两个解决方案。
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)。比较中的差异是否会影响时间/空间的复杂性?
答案 0 :(得分:0)
空间复杂性:没有变化,因为您没有使用任何额外的变量/数据结构(第二个片段中的firstIndex
未被考虑,因为它需要恒定的空间)。
时间复杂性:很少或没有变化。在这两个片段中,您只进行了一次比较,但第一个片段的速度会慢一些,因为与直接变量访问相比,数组访问速度较慢。
答案 1 :(得分:0)
好吧让我们清楚
两者的时间复杂度为O(n)
。空间复杂度为O(1)
。
数组索引访问等等对Big-O timne复杂性没有影响。
虽然这些算法至少是O(N)。
这些O(n)
并非至少。
您可以通过执行
等操作来改善运行时而非时间复杂性if(set[i] != firstIndex)
{
isTrue=false;
break;
}