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

发布于 2024-10-31 14:09:47 字数 324 浏览 4 评论 0原文

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

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

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

Is there a way or a resource for finding the time and space complexity of the Array implementation in PHP other than calculating it by hand?

An array in PHP is actually an ordered map. A map is a type that associates values to keys. This type is optimized for several different uses; it can be treated as an array, list (vector), hash table (an implementation of a map), dictionary, collection, stack, queue, and probably more. As array values can be other arrays, trees and multidimensional arrays are also possible. - php.net

From what I can tell it would seem that it has the general complexity of a map

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

在巴黎塔顶看东京樱花 2024-11-07 14:09:47

因为它的作用类似于哈希表,所以通过键访问元素时将需要 O(1) 时间。

如果您循环遍历数组,自然您将有 O(n) 时间。

如果你有时间,你可以实际查看 PHP 的实现此处为数组

Because it acts like a hash table, you will have O(1) time when accessing an element by a key.

If you are looping through the array, naturally you will have O(n) time.

If you have time, you can actually check out PHP's implementation of array here

微凉 2024-11-07 14:09:47

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

  • 设置值:O(1)
  • 附加:O(1)(与为键“length”设置值相同)
  • 前置:O(n)(它是猜测,但应该适合,因为它应该重写现有的键)
  • 取消设置:O(1)

遗漏了什么?

Accessing and iterating is describe by @Mike-Lewis so far

  • Setting a value: O(1)
  • Append: O(1) (Its the same as setting a value to the key "length")
  • Prepend: O(n) (Its a guess, but should fit, because it should rewrite the existing keys)
  • Unset: O(1)

Anything missed?

一梦浮鱼 2024-11-07 14:09:47

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

In addition to what @Mike Lewis said, I would add, that one array element in PHP occupies minimum of 52 bytes (proof)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文