algorithm - 复制动态数组中元素的大 O

标签 algorithm big-o

所以想问一下动态数组算法中复制元素的渐近增长。

在动态数组算法中,数组每次充满时都会将大小加倍,并且应该添加一个新元素。当数组满时,包含N/2个元素,翻倍后,新数组的大小为2N。然后在复制的对象/值之后插入下一个元素。

我相信复制的元素数量的大 O 是 O(N/2),但我是否还必须考虑数组翻倍的次数?

非常清楚,这是我的导师布置的问题,我一直在思考它,但我目前不确定是否/如何计算数组翻倍的次数,仅给出一个大小为 N 的数组。

最佳答案

I believed that the Big-Oh for the number of elements copied would be O(N/2), but would I also have to account for the times that the array has been doubled?

您正在寻找的可能是每个操作的复杂性和 amortized complexity 之间的区别.

特别是,在动态数组中插入的最坏时间复杂度确实是 O(N),但摊销复杂度是 O(1)(因为对于 N 次插入,最多复制 2*N 个元素。

关于algorithm - 复制动态数组中元素的大 O,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41786310/

相关文章:

algorithm - 互递归分析

java - 递归 Pascal 的三角行大 O 成本

objective-c - 打印文件中最常用的单词(字符串)Objective-C

c++ - C++数据结构的拓扑排序

algorithm - 为什么我不应该使用我的自定义加密算法?

java - 找出符合条件的一串数字中的所有整数

c++ - Lucas-Kanade 算法的计算复杂度是多少?

algorithm - 如何计算不同底数的对数项之和?

algorithm - 主方法 - 与两个 T 的递归关系

c++ - 在一些容器中处理一个对象