数据结构与算法学习之路2--数组

151 阅读1分钟

数组定义

数组是一种线性表数据结构。它是用一组连续的内存空间来存储一组具有相同类型的数据。 理解数组的概念可以通过如下几个关键词:

  • 线性表(数据排列像线一样,最多只有前后两个方向)
  • 连续的内存空间
  • 相同类型的数据

数组分析

  • 数组下标访问,因为数组存储在连续的内存空间上所以可以通过下标计算出对应访问元素的地址,对应的时间复杂度为O(1)
  • 数组通过值查找时,即使数组已经排好序对应的最快的方式时间复杂度也为O(logn)
  • 数组插入时为了保持内存的连续性需要将之后的元素依次后移,对应的时间复杂度为O(n)
  • 数组删除时为了保持内存的连续性需要将其之后的元素依次前移,对应的时间复杂度为O(n)

我们平时使用的高级的编程语言Python、Go、JAVA等几乎都有数组这个数据结构,它们是数据结构的封装,它们从语言层面封装了数组的一些操作。平时业务开发,使用它们即可。需要注意PHP中的数组并不是真的数组,PHP中的数组底层是使用散列表(HashTable)来实现的。