我正在尝试使用 Big O 表示法计算出我的算法的时间,但我找不到关于它的非常清楚的解释。
基本上,我的算法包括将新数组与“父”数组中的所有其他数组进行比较。
为此,我有一个 for 循环,它迭代父数组中的所有元素,寻找一个看起来像新创建的数组的数组。
这是代码:
bool AlreadyExistingArray(Array array)
{
bool areEqual = true;
foreach (Array a in arrayEntries)
{
if (a.count != array.count)
continue;
foreach (int i in array)
{
if (!a.contains(i))
{
areEqual = false;
break;
}
}
if (areEqual)
{
areEqual = false;
foreach (int i in a)
{
if (!a.contains(i))
{
areEqual = false;
break;
}
}
}
}
return areEqual;
}
Run Code Online (Sandbox Code Playgroud)
我知道每个 for 循环都应该是 O(n),但是,复杂性是否应该组合?由于我正在处理不同大小的数组,因此我很确定不能将复杂性视为 O(n^2)。
希望我说清楚了!否则,让我知道,我会尝试进一步澄清。
编辑:改变算法。