Time complexity 如何计算大O执行增长率?
我只是想知道这段代码的大O执行增长率的分解,我试图计算它,但是我得到了错误的for循环。所以我现在完全被困在这个问题上了Time complexity 如何计算大O执行增长率?,time-complexity,big-o,Time Complexity,Big O,我只是想知道这段代码的大O执行增长率的分解,我试图计算它,但是我得到了错误的for循环。所以我现在完全被困在这个问题上了 void doInter(int setA[], int setB[], int sizeA, int sizeB) { const int MAX = 10; int sizeR; int results [MAX]; // validate sizeA and sizeB if ((sizeA == 0) ||
void doInter(int setA[], int setB[], int sizeA, int sizeB)
{
const int MAX = 10;
int sizeR;
int results [MAX];
// validate sizeA and sizeB
if ((sizeA == 0) || (sizeB == 0))
{
cout << "one of the sets is empty\n";
}
// save elements common to both sets
for (int i = sizeR = 0; i < sizeA; i++ )
{
if (member(setB, setA[i],sizeB))
{
results[sizeR++] = setA[i];
}
}
{
cout << results[i] << " ";
}
cout << "}" << endl;
}
bool member (int set[], int n, int size)
{
for (; size > 0; --size)
{
if (set[size-1] == n)
{
return true;
}
}
return false;
}
void doInter(intseta[],intsetb[],intsizea,intsizeb)
{
常数int MAX=10;
内标器;
int结果[MAX];
//验证sizeA和sizeB
如果((sizeA==0)| |(sizeB==0))
{
cout此代码的复杂性为O(sizeA*sizeB)
。计算相对容易-首先计算内部函数成员的复杂度
-这是一个单循环,在最坏的情况下,它将执行sizeB
迭代。现在在外部函数中,您在大小sizeA
的循环中调用此函数。因此,总体复杂度是两个复杂度对于这两个循环,其余操作相对简单
同样,实现这种复杂性的一个例子也很容易看到——使用两个没有公共元素的数组。当你要求分析Big O
时,最好发布算法的伪代码,而不是整个代码。它看起来像O(n^2),因为成员函数被称为sizeA times,每次调用它时,我们都会执行sizeB times,寻找setA中可能的元素,setA也在setB中。我在这里讨论的是最坏的情况。所以我认为O(sizeA*sizeB)应该是这里的答案。但我不知道如何进行更正式的分析。