Big o 关于O(n^2logn) void函数(int n){ int i,j,k; 对于(i=n/2;i
循环是嵌套的,因此它们的所有计数都是相乘的。(n/2)*(n/2)是n^2/4,但常数对big-O并不重要;n^2/4=O(n^2)是这样写的。对于big-O表示法,常数被省略:“如果f(x)是多个因子的乘积,任何常数(乘积中不依赖于x的项)都被省略。” 所以你的内循环是logn,中循环和外循环是n/2,但加起来就是(n/2)*(n/2)*logn=1/4(n^2logn),1/4被丢弃,得到O(n^2logn) 参考:Big o 关于O(n^2logn) void函数(int n){ int i,j,k; 对于(i=n/2;i,big-o,Big O,循环是嵌套的,因此它们的所有计数都是相乘的。(n/2)*(n/2)是n^2/4,但常数对big-O并不重要;n^2/4=O(n^2)是这样写的。对于big-O表示法,常数被省略:“如果f(x)是多个因子的乘积,任何常数(乘积中不依赖于x的项)都被省略。” 所以你的内循环是logn,中循环和外循环是n/2,但加起来就是(n/2)*(n/2)*logn=1/4(n^2logn),1/4被丢弃,得到O(n^2logn) 参考: 您的算法的精确迭代次数及其增长复杂度顺序如下所示: 支持文件:谢谢,这很
您的算法的精确迭代次数及其增长复杂度顺序如下所示:
支持文件:谢谢,这很有意义。
void function(int n ) {
int i, j , k ;
for ( i = n/2 ; i <= n ; i ++)
for ( j = 1; j + n/2 <= n; j++ )
for ( k = 1; k <=n ; k = k*2 )
count ++;
}