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

链表和数组对比

作者: 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)。

    相关文章

      网友评论

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

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