美文网首页
链表和数组对比

链表和数组对比

作者: Tomy_Jx_Li | 来源:发表于2019-03-18 22:07 被阅读0次

1.插入对比

数据无序

链表

插入只需要在表头或者表位插入即可,时间复杂度O(1)。

数组

插入也只需要在数组的头部或者尾部插入即可,时间复杂度也是O(1)。但是数组可能无空间存入新数据的情况。

数据有序

链表

需要进行数据的对比,时间复杂度是O(n),然后对比到可插入位置,才能插入。可以通过跳表等数据结构进行优化。

数组

需要进行数据的对比,时间复杂度是O(n+m),n代表查找的时间,m代表数组移位的时间。查找可以利用二分等进行优化。移位必须老老实实的进行一步步的操作了。

2.删除对比

数据无序

链表

删除需要进行数据的查找,所以时间复杂度O(n)。因为是无序的,不能优化,但是删除动作时间复杂度是O(1)。

数组

删除同样需要数据查找,时间复杂度O(n)。同样无序,不能优化。但是呢数组对于cpu缓存比较友好,所以查询时间会更短一些。但是相比于链表,删除动作需要移位数组的数据。但是这里可以进行优化,直接将末尾的数据移位到这里即可。所以时间复杂度同样是O(1)。

数据有序

链表

查找数据,时间复杂度O(n),可使用跳表优化。删除动作时间复杂度O(1)。

数组

查找数据,时间复杂度O(n),数组对cpu缓存友好。可优化查询。删除动作需要将后面的所有数据按次移位,所以时间复杂度O(n)。

3.查找对比

数据无序

链表

时间复杂度O(n),不能优化。

数组

时间复杂度O(n),不能优化。但是cpu缓存对数组友好。相对来说速度会快一点

数据有序

链表

时间复杂度O(n),使用跳表等优化。

数组

时间复杂度O(n),使用二分等优化。

4.遍历对比

数组可以按照下标进行遍历。数组可以使用下标获取某位数据,获取复杂度O(1)。
链表需要通过指针进行遍历。链表要获取第几位数据,只能通过指针循环,复杂度O(n)。

相关文章

  • Redis-第十章节-链表

    目录 数组和链表 链表 对比 总结 1、数组和链表 数组: 数组会在内存中开辟一块连续的空间存储数据,这种存储...

  • 链表

    链表:通过“指针”将零散的内存块联系起来。常见链表结构:单链表、循环链表和双链表。 单链表 对比数组学习单链表 循...

  • 链表

    数组和链表的对比 前面提到的动态数组,栈和队列,底层依托的都是静态的数组这节涉及到的链表才是真正的动态数据结构 数...

  • 博览网/boolan-STL与泛型编程-第3周笔记文章

    1、hashtable 哈希表和数组、以及链表的对比: (1).数组的特点:寻址容易,插入和删除困难;数组存储连续...

  • 双向链表

    双向链表结构 双向链表和动态数组对比 动态数组开辟,销毁内存空间的次数相对较少,但可能造成内存空间浪费(可以通过缩...

  • 链表和数组对比

    1.插入对比 数据无序 链表 插入只需要在表头或者表位插入即可,时间复杂度O(1)。 数组 插入也只需要在数组的头...

  • 数组与链表对比

    数据结构种类很多,但底层实现基本逃不开数组和链表这两种结构

  • Swift 5.3 数据结构——链表 LinkedList

    链表 链表是按线性单向顺序排列的值的集合与数组对比,链表的优势是插入和删除时间复杂度都是O(1) 链表由一系列的节...

  • [AlgoGo]线性存储结构-链表

    与数组的对比 方面数组链表内存空间连续离散插入删除O(n)O(1)随机访问O(1)O(n) 链表插入、删除操作不需...

  • iOS知识复习笔记(19)---数据结构和算法1

    数组和链表的区别 数组静态分配内存,链表动态分配内存 数组内存中连续,链表不连续 数组元素在栈区,链表在堆区 数组...

网友评论

      本文标题:链表和数组对比

      本文链接:https://www.haomeiwen.com/subject/tijimqtx.html