for ( i =0; i < n ; i ++) {
if ( i %2==0) {
for ( j =0; j < i ; j ++) {
System . out . println ( " Hi " );
}
}
}
我如何找到此代码的大O符号?
答案 0 :(得分:0)
您可以计算出在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?