首页 > 编程语言 > 详细

数组和链表

时间:2021-03-10 21:29:57      阅读:27      评论:0      收藏:0      [点我收藏+]
数组(ArrayList)由于是紧凑连续存储,可以随机访问,通过索引快速找到对应元素,?且相对节约存储空间。但正因为连续存储,内存空间必须?次性分配够,
所以说数组如果要扩容,需要重新分配?块更?的空间,再把数据全部复制过去,时间复杂度 O(N);?且你如果想在数组中间进?插?和删除,
每次必须搬移后?的所有数据以保持连续,时间复杂度 O(N)。
优点:随机查询快、在尾部添加比链表快
缺点:随机插入、删除相比链表慢
 
链表(LinkedList)因为元素不连续,?是靠指针指向下?个元素的位置,所以不存在数组的扩容问题;如果知道某?元素的前驱和后驱,操作指针即可删除该元素
或者插?新元素,时间复杂度 O(1)。但是正因为存储空间不连续,你?法根据?个索引算出对应元素的地址,所以不能随机访问;?且由于每个元素
必须存储指向前后元素位置的指针,会消耗相对更多的储存空间。
优点:随机插入、删除快  比数组
缺点:查询慢 相比数组
 
相同点:两者都是线性表。而且是线程不安全的。Vector 向量 线程安全。 Vector 也是基于数组实现的。
 
 
 
 

数组和链表

原文:https://www.cnblogs.com/controller666/p/14513901.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!