c编程语言代码的复杂性
Complexity of a code in c programming language
我想知道这段代码的复杂度是O(n)还是O(count*n)?我使参数计数,它不依赖于参数 n,如您所见:
void change(int A[], int n, int x)
{
int i, j, count=0;
for(i=0; i<n; i++)
{
if(A[i]==x)
{ count++; }
}
for(i=0; i<count; i++){
for(j=0; j<n-i; j++){
printf("Hello World"):
}
}
}
第一个循环是Theta(n)
。第二个循环的时间复杂度(如您所见,取决于 count
的值)为:
T(n) = n + (n-1) + ... + (n-count) = O(n * count)
因此,最终时间复杂度为O(n * count)
。而作为 count = O(n)
,我们可以说时间复杂度是 O(n^2)
n
。
我想知道这段代码的复杂度是O(n)还是O(count*n)?我使参数计数,它不依赖于参数 n,如您所见:
void change(int A[], int n, int x)
{
int i, j, count=0;
for(i=0; i<n; i++)
{
if(A[i]==x)
{ count++; }
}
for(i=0; i<count; i++){
for(j=0; j<n-i; j++){
printf("Hello World"):
}
}
}
第一个循环是Theta(n)
。第二个循环的时间复杂度(如您所见,取决于 count
的值)为:
T(n) = n + (n-1) + ... + (n-count) = O(n * count)
因此,最终时间复杂度为O(n * count)
。而作为 count = O(n)
,我们可以说时间复杂度是 O(n^2)
n
。