给定代码的时间复杂度
Time complexity of the given code
有人能告诉我波纹管代码的复杂性吗?
std::cin>>n1;
int ctr=0;
for(int i=2;i<=n1;i++)
{
if(i>=n/2&&ctr==0)
{
cout << " You entered a prime no";
break;
}
else if(n1%i==0)
{
ctr++;
cout<<i<<" ";
n1/=i;
}
}
有人可以建议如何计算涉及多个if-else条件的此类循环的复杂性吗?
内部循环O(1)
。外循环的复杂性取决于代码对n
做什么,而你没有显示代码,所以它可以是任何东西。
至于一般准则:渐近复杂度总是关于一个数量。通常,这被视为输入大小(无论这意味着要解决的问题)并表示为n
。在您的情况下,它很可能是变量n
,因为它用于循环停止条件。
一旦你知道你想要复杂度的数量(n
),它就很简单了。不依赖于n
的操作是O(1)
。对每个n
值做O(f)
工作量的操作是O(n * f)
的,其中f
确实可以是n
的函数。递归会变得更加棘手,但这是基本的概述。
int n;
std::cin >> n;
// O(oo) e.g. O(infinite)
while( n > 0 ) {
// for loop is O(1)
for(int i = 1 ; i <= 9 ; i++) {
if( n % i == 0) {
//piece of code involving O(1)complexity.
}
}
// this makes the while loop O(1)
if ( n == 10000000000000 ) {
break;
}
}
此算法为 O(1)
for 循环的复杂度是 O(n)
其中 n 是迭代次数...
这里n=9
,但是认为for循环一般是稳定的(O(1)
)并且与迭代次数无关的结论是错误的。
相关文章:
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- while循环中while循环的时间复杂度是多少
- 我可以创建一个包含两个变量的 for 循环,但时间复杂度仍然为 O(n) 吗?
- 函数的时间复杂度是多少?
- 计算两个代码块的时间复杂度
- 给定C++代码的时间复杂度是多少?
- 以下递归代码的时间复杂度是多少?
- 此特定代码的时间复杂度是多少?
- 谁能帮我降低以下代码的时间复杂度?
- 以下代码片段的时间复杂度是多少?
- 此代码段的时间复杂度
- 用于搜索的给定代码的时间复杂度是多少
- 如何降低以下代码块的时间复杂度
- 给定代码的时间复杂度
- 这个代码(来自leetcode)的时间复杂度是多少
- &&运算符的 C++ 代码时间复杂度
- 以下代码的时间复杂度是多少
- 什么是"渐近紧时间复杂度"?此代码的时间复杂度是否渐近紧张?
- 优化的c++代码,时间复杂度为O(n2),空间复杂度为0(1),用于后续输入
- 下面代码的时间复杂度