网上看到文章都说无序数组删除元素慢,其实只要稍作改进就快了。
对于非末尾的元素,需要删除时不要直接删除,把末尾的元素移到它的位置上,再删除末尾的元素,只需要做一次数据移动。
对于有序数组,上面的方法会打乱元素的顺序,不能用。但也有办法做点优化,删除元素时不必要每次都真正删除它,可以给它做个删除标记,一段时间之后再把那些已标记删除的元素统一删除掉,增加新元素时,也可以利用附近已标记删除的元素位置,减少元素移动的次数。为了提高效率,可以把已标记删除的元素位置存入另一个数组,删除或插入元素时可以更快速。