当大小增加常数时,计算阵列的运行时间

时间:2016-02-02 07:37:52

标签: data-structures big-o

我正在学习数据结构和运行时间计算。我有一个问题是要了解增加数组大小的运行时计算。

1)如果我们通过常数增加数组的大小。

N=4 will be N0  

N=8 will be N0+c 

N=12 will be N0+2c 
.
.
No+kc

N=N0 +kc 
N=N0+kc

k=(N−N0 )/c 
k=(N−N0)/c

 Running time= N0 k+c(1+2+,...,k) 
N0 k+c(1+2+,...,k)

N0 k+ck(k+1)/2 which is equal to  O(N2)

任何人都可以帮助我理解最终的运行时间计算。

1 个答案:

答案 0 :(得分:1)

上述分析的最后一步是使用众所周知的summation rule

enter image description here

N中的此表达式展开k会产生算法渐近行为的上限O(N^2)

enter image description here

请注意,在实践中,术语“运行时间”可能会有些误导,因为算法的实际运行时间与增长的实体有关(例如数组的大小)不一定直接对应于算法的时间复杂度渐近行为(取决于,例如,特定系统如何处理和移动大数据)内存中的结构等)。我们真的只对复杂性感兴趣,因为相对而言,它可以估算出当输入数据变大时算法的行为方式。也许苹果和苹果,但从这个意义上说,我相信“运行时间”有点过于开放而无法解释;例如,我们的复杂性分析的读者可能认为我们实际上在SI时间单位中说明了算法运行多长时间的度量,而实际上我们只是在行为上呈现了界限。算法在其渐近极限。

一些古玩:上面的这个求和规则在(传闻)故事中起着核心作用,这个故事讲述着名的数学家高斯,作为一个8岁的孩子,如果将这样的作业分配给1到100,那么他的老师,同时他的同学们尽力(慢慢地)按数字添加这些数字。