我想知道如何計算第二秒鐘的大O,而當重複次數持續下降。重複檢查功能的大O
int duplicate_check(int a[], int n)
{
int i = n;
while (i > 0)
{
i--;
int j = i - 1;
while (j >= 0)
{
if (a[i] == a[j])
{
return 1;
}
j--;
}
}
return 0;
}
所以說是正確的,如果在某些時候內循環運行相當於O(n),即使之後運行n-1,...,n-3,.... nk假設外循環運行O(n),內循環仍然是O(n^2)?真正重要的是在最壞的情況下循環運行的時間是多少? –
同意:「可以通過對數組」O(nlogn)「進行排序來更有效地解決這個問題」然而,這可以更好嗎?嗯。聽起來類似於[生日悖論](https://en.wikipedia.org/wiki/Birthday_problem) – chux
@VanderIg是大O是最壞的情況下測量。 @Chux也許還有其他的方法比'O(nlogn)'更好,但我不知道任何東西。此外,我認爲生日悖論僅適用於有限數量的選項(366)。 – twain249