数组列表的成本

时间:2014-02-21 02:20:23

标签: java arrays performance arraylist

我知道要找到大小加倍时n个元素附加到列表所需的商店数量,可以通过总和∑ from n=1 to log(2,n) of 2^n = 2n-1找到。
我的问题是我如何使用求和来找到一个公式,而不是在大小上加倍,每次增长时,列表会增加2000个元素?

1 个答案:

答案 0 :(得分:0)

因此,如果数组增加2000个元素,那么n大小的数组将增加floor(n/2000)次。我们可能会注意到,它的最后2000个元素最多移动一次,接下来的2000个插槽(从结尾开始)移动两次,接下来的2000个插槽(从最后开始)移动三次,依此类推。所以我们有这个公式:

∑ i = 1 to floor(n/2000)[ i * 2000 ] = 

2000 * (∑ i = 1 to floor(n/2000) [ i ]) =

2000 * (1 + 2 + 3 + .. + floor(n/2000)) =

2000 * (floor(n/2000)*(1 + floor(n/2000))/2)
相关问题