Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 双嵌套for循环之间的复杂性差异?(爪哇)_Java_Performance_For Loop_Time - Fatal编程技术网

Java 双嵌套for循环之间的复杂性差异?(爪哇)

Java 双嵌套for循环之间的复杂性差异?(爪哇),java,performance,for-loop,time,Java,Performance,For Loop,Time,这两个嵌套for循环在性能和复杂性方面有什么不同 for(int i = 0; i < l.length; i++) { for(int j = 0; j <= i; j++) { //do something } } for(int i=0;iO(n**2) 第二个循环:n*n->O(n**2) 因此,第二个环路的速度几乎是第一个环路的两倍,而辅助环路的速度是相同的 # ## ### #### ##### ######

这两个嵌套for循环在性能和复杂性方面有什么不同

for(int i = 0; i < l.length; i++) {
    for(int j = 0; j <= i; j++) {
        //do something
    }
}
for(int i=0;i对于(int j=0;j而言,第一个循环的速度大约是第二个循环的两倍,但就渐近时间复杂度而言,它们是相同的:

O(N^2)
你可以用图形来思考:想象一个正方形,每边有N个单位。第二个循环访问所有单位的正方形

######
######
######
######
######
######
第一个循环访问属于覆盖一半正方形的三角形的点:

#
##
###
####
#####
######

两个环都具有相同的辅助行为-O(n**2)

  • 第一个循环:
    1+2+…+n=n(n+1)/2=n*n/2+n/2->O(n**2)
  • 第二个循环:
    n*n->O(n**2)
  • 因此,第二个环路的速度几乎是第一个环路的两倍,而辅助环路的速度是相同的

    #
    ##
    ###
    ####
    #####
    ######