我正在学习数据结构和运行时间计算。我有一个问题是要了解增加数组大小的运行时计算。
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)
任何人都可以帮助我理解最终的运行时间计算。
答案 0 :(得分:1)
上述分析的最后一步是使用众所周知的summation rule。
从N
中的此表达式展开k
会产生算法渐近行为的上限O(N^2)
。
请注意,在实践中,术语“运行时间”可能会有些误导,因为算法的实际运行时间与增长的实体有关(例如数组的大小)不一定直接对应于算法的时间复杂度或渐近行为(取决于,例如,特定系统如何处理和移动大数据)内存中的结构等)。我们真的只对复杂性感兴趣,因为相对而言,它可以估算出当输入数据变大时算法的行为方式。也许苹果和苹果,但从这个意义上说,我相信“运行时间”有点过于开放而无法解释;例如,我们的复杂性分析的读者可能认为我们实际上在SI时间单位中说明了算法运行多长时间的度量,而实际上我们只是在行为上呈现了界限。算法在其渐近极限。
一些古玩:上面的这个求和规则在(传闻)故事中起着核心作用,这个故事讲述着名的数学家高斯,作为一个8岁的孩子,如果将这样的作业分配给1到100,那么他的老师,同时他的同学们尽力(慢慢地)按数字添加这些数字。