我正在使用数组实现堆栈。当我将物品推入堆栈时,它需要在某些时候增长。所以我想知道它应该调整多少?我应该用常数调整大小吗? 请告诉我。
答案 0 :(得分:3)
一方面,你不想经常这样做,特别是在大数据集上。 另一方面,你不想浪费太多记忆。通常好的策略可能是将大小乘以2(或1.5,如果你更关心内存而不是性能)。随着增长倍增,它将适应可能的增长,并且将是可预测的增长业务数量。
答案 1 :(得分:1)
IIRC .net
框架在必要时尝试将list
的大小加倍,对您来说也是一个很好的方法。
答案 2 :(得分:1)
它几乎完全取决于你的堆栈需要做什么以及用途是什么,但是在通用堆栈上,一旦达到极限,堆栈的加倍通常是最有利的。这可以使用摊销分析轻松显示。我很确定你会在互联网的某个地方找到证据:P
但如果你懒得看here进行简短的解释
答案 3 :(得分:1)
您希望将数组大小乘以某个常数(例如1.75),它实际上并不重要。
通过乘法,您实现堆栈的方式是添加元素需要Amortized Constant Time。
示例:
开始:
添加第一个元素:
添加第二个元素:
添加第3个元素:
添加第4个元素:
添加第5个元素:
添加第6个元素:
...当你继续时,每个添加的平均分配将保持在2
答案 4 :(得分:0)
您应该调整大小的数量实际上取决于您添加到数组的内容。此外,您应该通过常量调整它,因此您不必通过更复杂的方法来调整阵列的大小。
答案 5 :(得分:0)
只是尺寸的两倍,这是传统方法。