常见的几种数据结构的插入、查找、删除操作的执行性能

673 阅读1分钟

数组

数组采用一段连续的存储单元来存储数据。

因为存储的数据是连续的,所以

  • 插入和删除操作,如果操作的对象不是最后一个元素,就会涉及到数组元素的移动,其平均复杂度为O(n)
  • 对于指定下标的查找,时间复杂度为O(1)
  • 对于给定值进行查找,需要遍历数组,逐一比对给定关键字和数组元素,时间复杂度为O(n)
  • 对于有序数组,则可采用二分查找,插值查找,斐波那契查找等方式,可将查找复杂度提高为O(logn)

线性链表

链表一般用是非连续性的存储空间来存储数据

由于链表的每个元素都指向下一个元素,且是非连续的空间,所以

  • 对于链表的新增,删除等操作(在找到指定操作位置后),仅需处理结点左右的引用即可,时间复杂度为O(1)
  • 对于查找操作,需要遍历链表逐一进行比对,复杂度为O(n)

哈希表

哈希表是数组和链表的结合,他的头部是一个数组,数组的每个节点都是链表的头节点

  • 不考虑哈希冲突的情况下,添加、删除、查找,仅需一次定位即可完成,时间复杂度为O(1)