小于比较算法的频率

时间:2019-02-21 11:20:20

标签: algorithm

以下代码的小于比较频率为(N + 1)(N + 2)/ 2。

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

我认为N + 1是第一次循环。那(N + 2)/ 2呢,知道吗?

1 个答案:

答案 0 :(得分:1)

在第一次迭代中,内部循环运行N-1次,在第二次迭代中运行N-2次,依此类推。每次都再次检查<操作(当条件不再成立时),因此在内部循环的所有迭代中N + N-1 + N-2 + ... + 1检查<。在外部循环中,<被额外检查N+1次,总共N+1 + N + ... + 1次。该总和等于(N+2)*(N+1)//2

您还可以将迭代次数可视化为(锯齿状)三角形:

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

通常,边长为N+1的直角三角形的面积为(N+1)*(N+1)//2,但是由于其假设是“锯齿状的”,因此附加了(N+1)//2(即{{ 1}}个边长为1)的较小三角形,该三角形又加起来为N+1