"if"语句是否会影响时间复杂度分析?

Fra*_*nXh 7 java algorithm complexity-theory

根据我的分析,这个算法的运行时间应该是N 2,因为每个循环遍历所有元素.我不确定if声明是否会改变时间复杂度?

for(int i=0; i<N; i++){
    for(int j=1; j<N; j++){

        System.out.println("Yayyyy");
        if(i<=j){
            System.out.println("Yayyy not");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Tug*_*tes 8

  • Tp:将常量文本打印到标准输出所需的时间.
  • Ti:内循环内所有其他操作所需的时间(谓词评估等).
  • :除了执行内部循环(初始化计数器等)之外,外部循环内的所有操作所需的时间.
  • Tc:设置流程和其他所有簿记所需的时间

总运行时间为Tc + N x(To + NxTi + N/2xTp).

这等于Tc + NxTo +(Nx(N/2))×(2Ti + Tp),当N变为无穷大时,其对于K> Ti + Tp/2的值以K x(N ^ 2)为界.该边界使得时间复杂度仍为O(N ^ 2).

不,if语句不会改变此示例中的时间复杂度.

  • @Akshit:时间复杂度衡量运行时间相对于输入大小的变化,它不是运行时间本身的绝对量度.在此循环内添加更多条件语句肯定会增加运行时间,但运行时间相对于输入大小N增加的速率仍由O(N ^ 2)控制. (3认同)