for 循环的大 O 表示法简单问题
Posted
技术标签:
【中文标题】for 循环的大 O 表示法简单问题【英文标题】:Big O notation easy problem with for loops 【发布时间】:2022-01-13 22:38:37 【问题描述】:以下代码片段的 Big-O 复杂度是多少?
const int N = 3;
char arr[N][N][3];
for (int i=0; i<N; i++)
for(int j=0; j<N; j++)
for(int k=0; k<3; k++)
cout<<”Initial Value: “;
cin>>arr[ i ][ j ][ k ];
我的答案是 O(N^3) 虽然我不确定,因为最后一个 for 循环。有人可以澄清一下吗?
【问题讨论】:
假设 N 可以变化,它应该是 O(N^2):O(1) + N * N * (3 * O(1)) = O(1 + 3N^2) = O(N^2) 【参考方案1】:上述代码的大 O 复杂度为 O(N^3)。即使您的最后一个循环也具有与 N 相同的值,即 3。 所以是的,你是对的。
【讨论】:
以上是关于for 循环的大 O 表示法简单问题的主要内容,如果未能解决你的问题,请参考以下文章