这是功能:
void f(int n){ for(int i = 0; i< n; ++ i) for(int j = 0; j< i; ++ j) for(int k = i * j; k> 0; k / = 2) 的printf( “〜”);}在我看来,计算时间……
复杂性是 O(N*N*LOG_2(N^2)) 。
O(N*N*LOG_2(N^2))
第一个和第二个循环都有 O(N) 和最后一个循环 k 具有对数增长。
O(N)
k
LOG_2(N^2) = 2*LOG_2(N) and O(N*M)=O(N)*O(M). O(constant)=1.
因此,对于最后一个循环的增长,您也可以编写 O(LOG_2(N^2))=O(LOG(N)) 。
O(LOG_2(N^2))=O(LOG(N))