这段代码的执行时间增长率大O是什么?
void doDiff(int setA[], int setB[], int sizeA, int sizeB) {
const int MAX = 10;
// validate setA and setB
if ((sizeA == 0) && (sizeB == 0))
cout << "both sets are empty " << endl;
else
cout << "symmetric difference: { " ;
for (int i = 0; i < sizeA; i++ )
if (!member(setB, setA[i],sizeB))
cout << setA[i] << " ";
for (int i = 0; i < sizeB;i++ )
if (!member(setA, setB[i],sizeA))
cout << setB[i] << " ";
cout << "}" << endl;
}
bool member(int set[], int n, int size)
{
for (; size > 0; size--)
if (set[size-1] == n)
return true;
return false;
}
当我计算此代码的大O时,我最终得到O(N*N*N) || O(N^3)
我不确定此代码的确切执行时间增长率。
请帮我。
提前谢谢
答案 0 :(得分:3)
用问题填写答案似乎是不合适的,但由于这听起来像是家庭作业,我认为它们是一个更好的方法来实现目标(这是为了弄清楚它是如何工作的):
member
的“大O”是什么?这很重要,因为doDiff
非常依赖它。doDiff
拨打member
多少次?member
的时间都相同,member
为O(X),doDiff
拨打member
Y次,那么“大” -O“doDiff
?