教科书(Sedgewick和Wayne,Algorithms(第4版))说,为了缩小数组,我们可以有效地将数组s []的大小减半,当它是四分之一满时而不是半满。但我不知道它是如何运作的?
要从数组中删除元素,为什么我不能将其余元素复制到新数组中?任何人都可以告诉我这个"将数组的大小减半[]"来自?出于什么目的?和四分之一满和半满的效率差异?
非常感谢!!!
答案 0 :(得分:1)
收缩半满的数组后,我们假设添加了一个新元素。数组将被扩展(2)并将再次变为半满...
此后,如果删除了一个元素,将再次收缩。
所以这么简单的例子,当在一个循环中添加一个元素然后被删除会产生非常糟糕的性能。
解决方案是在单引号时收缩。