数组与链表的区别

Posted by Clear Blog on November 12, 2017

究根结底,两种数据结构的不同是因为在存储上物理地址是否连续导致。 因为数组存储的时候,物理地址必须连续,所以查询效率高,而插入删除效率低, 且存储数组结构需预先占用固定的内存,会造成不必要的内存浪费。 而链表中元素存储的物理地址不必连续,这就造成了两种数据结构的不同点。

数组的优点

  • 随机访问性强
  • 查找速度快

    数组的缺点

  • 插入和删除效率低
  • 可能浪费内存
  • 内存空间要求高,必须有足够的连续内存空间。
  • 数组大小固定,不能动态拓展

    链表的优点

  • 插入删除速度快
  • 内存利用率高,不会浪费内存
  • 大小没有固定,拓展很灵活。

    链表的缺点

  • 不能随机查找,必须从第一个开始遍历,查找效率低
数组 链表
读取 O(1) O(n)
插入 O(n) O(1)
删除 O(n) O(1)