数据结构中的数组加倍
有时我们使用动态内存分配来创建数组。如果使用动态内存分配技术分配了数组,则可以通过执行一些操作来使数组大小加倍。
假设初始数组大小为5。
数组
数组加倍后,大小为-
要使大小为n的数组arr的大小增加一倍,请使用arr[0…n-1]。首先,我们必须创建一个新的大小为m的数组。然后将n个元素从arr复制到新数组。最后,将arr的值更改为指向新数组。
要创建大小为m的数组,这将花费θ(m)的时间。这是因为它将使用一些默认值进行初始化。然后将需要额外的θ(n)时间才能从旧阵列复制到新阵列。因此,该运算需要θ(m+n)的时间。当阵列已满时,将执行此操作。通常,m值等于2n。因此复杂度为θ(2n+n)=θ(3n)等于θ(n)。但是该操作被认为是昂贵的。但是,此操作在子序列n次迭代中摊销,然后每次迭代仅增加θ(1)时间。因此我们可以理解,以恒定因子增加数组大小不会对渐进复杂性产生不利影响。