美文网首页
数组、链表(Array、Linked List)

数组、链表(Array、Linked List)

作者: 952625a28d0d | 来源:发表于2019-02-12 14:27 被阅读2次

数组 Array

  • 数组在内存中的存储方式


    image.png

    可以看出数组查找的时间复杂度是O(1),因为直接通过下标就可以查找

  • 数组的插入和删除操作


    image.png

从上图可以看出,数组插入元素到数组中间的时间复杂度是O(n),因为插入之后插入位置后面的数据都要换位置,删除也是如此。当然,如果插入或删除的元素是数组最后,则时间复杂度为O(1)

image.png

链表 Linked List

  • 插入、删除的速度比数组快
image.png
  • 每个元素都有一个指针,链向下一个节点。
  • Insert操作


    image.png

新插入的元素的Next指针直接指向后一个元素,新插入的元素的前面的元素的Next指向新插入的元素即可。

  • Delete操作
image.png

删除一个元素,直接把该元素前面的元素的Next指向后面的元素即可。再把要删除的节点从内存中释放掉即可。

那么链表的插入和删除都是O(1)的时间复杂度。

但是呢,链表中想要查找某一个元素,比如查找第五个元素,则要从头遍历五次,那么链表查找的时间复杂度则是O(n)的。

所以,不用的数据结构优缺点都是不同的。使用的时候根据实际情况来应用。

双链表

image.png
image.png

相关文章

网友评论

      本文标题:数组、链表(Array、Linked List)

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