日期:2014-05-17  浏览次数:20657 次

链表和动态数组的问题
对于随机删除,
链表需要迭代n次找到对应的项然后修改指针指向实现删除,那么复杂度是O(n)
数组根据下标直接找到对应项然后复制元素实现删除,复杂度还是O(n)
thinking in java的作者说对比下,在链表中重复迭代n次的代价可以忽略。。不理解。。
既然一样,为什么讲到添加删除选择数据结构的时候链表就会优于数组?
求高人解答。。。


------解决方案--------------------
比如我的数据要插入第二个位置,数组就要从第三个开始向后移动数据,在给新的数据让空间,而链表只要移动指针就可以了,你说谁的效率高呢?如果插入到最后一位效率差不了多少。JAVA中是这样的LinkedList是用Entry实现的是一个双向不循环链表。而ArrayList底层用的是Hash,还要动态的开辟空间,如果数据插入非常多的话,ArrayList在一定的时间内还要开辟空间。