所以我有以下代码,我需要导出执行时间增长率,但是我不知道从哪里开始。我的问题是,我该怎么做呢?任何帮助将不胜感激。
谢谢。
// function to merge two sorted arrays
int merge (int smax, char sArray[], int tmax, char tArray[], char target[])
{
int m, s, t;
for (m = s = t = 0; s < smax && t < tmax; m++)
{
if (sArray[s] <= tArray[t])
{
target[m] = sArray[s];
s++;
}
else
{
target[m] = tArray[t];
t++;
}
}
int compCount = m;
for (; s < smax; m++)
{
target[m] = sArray[s++];
}
for (; t < tmax; m++)
{
target[m] = tArray[t++];
}
return compCount;
}
答案 0 :(得分:0)
实际上很简单。
看,第一个for
循环在每次迭代时增加s
或t
,因此它是O(smax + tmax)
。第二个循环显然是O(smax)
,第三个循环是O(tmax)
。我们总得到O(smax + tmax)
。
(有一些更聪明的方法可以证明,但我故意将它们排除在外。)
答案 1 :(得分:0)
所有循环的迭代次数均为(smax + tmax)。所以你可以说算法是O( max(smax,tmax) )
或O( smax +tmax)
。