PHP数组的时间/空间复杂性

时间:2011-04-12 20:12:45

标签: php arrays complexity-theory

除了手动计算之外,是否有方法或资源可以在PHP中查找Array实现的时间和空间复杂度?

  

PHP中的数组实际上是一个有序的映射。映射是将值与键关联的类型。此类型针对多种不同用途进行了优化;它可以被视为数组,列表(向量),哈希表(地图的实现),字典,集合,堆栈,队列,甚至更多。由于数组值可以是其他数组,因此树和多维数组也是可能的。 - php.net

据我所知,它似乎具有地图的一般复杂性

3 个答案:

答案 0 :(得分:7)

因为它的行为类似于哈希表,所以当按键访问元素时,您将有O(1)次。

如果你循环遍历数组,那么你自然会有O(n)时间。

如果你有时间,你可以查看PHP的implementation of array here

答案 1 :(得分:3)

到目前为止,@ Mike-Lewis描述了访问和迭代

  • 设定值:O(1)
  • 追加:O(1)(与将值设置为“长度”键相同)
  • 前置:O(n)(这是猜测,但应该适合,因为它应该重写现有的密钥)
  • 取消设定:O(1)

有什么遗漏?

答案 2 :(得分:0)

除了@Mike Lewis所说的,我还要补充一点,PHP中的一个数组元素至少占用52个字节(proof