【发布时间】:2018-07-16 00:20:04
【问题描述】:
for ( i =0; i < n ; i ++) {
if ( i %2==0) {
for ( j =0; j < i ; j ++) {
System . out . println ( " Hi " );
}
}
}
我如何找到这段代码的大 O 符号?
【问题讨论】:
-
O(N²),当然
标签: big-o
for ( i =0; i < n ; i ++) {
if ( i %2==0) {
for ( j =0; j < i ; j ++) {
System . out . println ( " Hi " );
}
}
}
我如何找到这段代码的大 O 符号?
【问题讨论】:
标签: big-o
根据 n 次操作计算每个操作需要执行多少次并删除常量。
最外层循环,for ( i =0; i < n ; i ++) { 改变了用于最内层循环的 i 的值。
if 语句if ( i %2==0) { 表示内部循环将以 1/2 的常数运行 n,因此您可以忽略它,它只是一个常数。
忽略 if 语句,最后的内部循环,for ( j =0; j < i ; j ++) { 运行 1+2+3+4+...+n 次,等于 n(n+1)/2 次。忽略常数,即 n^2。
O(n^2)
资源:https://en.wikipedia.org/wiki/1_%2B_2_%2B_3_%2B_4_%2B_%E2%8B%AF 和 Big O, what is the complexity of summing a series of n numbers?
【讨论】: