此代码中的if语句的t(n(是什么?
public static int min(int[] v)
{
int x = v[0];
for (int i = 0; i < v.Length; i++)
{
if (x >v[i])
x = v[i];
}
return x;
}
我认为如果本身将被执行n次,但是我们的老师说n^2我不明白为什么?
o(1(。
if
本身会在恒定时间内执行。if
内部的条件可能具有任何时间的复杂性,因此您需要注意。
示例的更新版本显示 int[] v
作为序列的数据,这意味着访问i
TH元素为O(1(,min
的总时间为O(n(,如该方法的标准实现所预期的。
请注意,在不知道代码中使用的数据结构的情况下,无法提供正确的估计。可以猜测,原始示例代码中的y
是标准数组,但是您使用的算法可能并非如此。例如,如果您将链接列表用作索引结构的数据存储(即,您已实现了IList<...>
作为节点的链接列表(,而对i
元素的访问也将是O(N(,即使通常X [I]为O(1((对于数组。