运行 数组大小按常量增加时的计算

Calculation of Running time of array when size increase by constant

我正在学习数据结构和运行时间计算。我在理解增加数组大小的 运行 时间计算时遇到了问题。

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)

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

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

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

请注意,在实践中,术语 "running time" 可能会有些误导,因为实际的 运行ning time对于一个关于增长实体(例如数组的大小)的算法不一定直接对应于时间复杂度渐近行为 算法(取决于,例如,特定系统如何处理和移动内存中的大数据结构等)。我们真的只对复杂性感兴趣,因为相对而言,它给出了当输入数据变大时算法将如何表现的估计。也许苹果和苹果,但从这个意义上说,我认为 "running time" 有点容易被误解;例如,我们的复杂性分析的 reader 可能认为我们实际上是以 SI 时间单位来衡量算法将 运行 持续多长时间,而实际上我们只是在 算法在其渐近极限下的行为


一些奇闻:上面的这个求和规则在(传闻的)故事中起着核心作用,这个故事讲述了著名数学家高斯在 8 岁时如何在给定这样的情况下即时对 1 到 100 的数字求和他的老师布置的作业,同时他的同学们尽最大努力(慢慢地)将这些数字逐个相加。