我在下面的代码中为 if 语句找到大 O 时遇到了一些麻烦:
public static boolean areUnique (int[] ar)
{
for (int i = 0; i < ar.length-1; i++) // O(n)
{
for (int j = i+1; j < ar.length-1; j++) // O(n)
{
if (ar[i] == ar[j]) // O(???)
return false; // O(1)
}
}
return true; //O(1)
}
我正在尝试针对最佳、最差和平均情况进行时间复杂度分析
谢谢大家这么快回答!我不确定我最好的最坏情况和平均情况是否正确......应该存在大小写差异,而不是因为 if 语句?但是当我进行分析时,我将它们全部结束为 O(n 2 )
- 最佳:O(n) * O(n) * [O(1) + O(1)] = O(n 2 )
- 最差:O(n) * O(n) * [O(1) + O(1) + O(1)] = n 2
- 平均:O(n) * O(n) * [O(1) + O(1) + O(1)] = O(n 2 )
我这样做对吗?我的教科书不是很有帮助