2011-04-12 59 views
7

除了手工計算數組之外,是否有方法或資源來查找PHP中數組實現的時間和空間複雜度?PHP數組的時間/空間複雜度

PHP中的數組實際上是一個有序映射。地圖是一種將值與鍵關聯的類型。這種類型針對多種不同用途進行了優化;它可以被看作是一個數組,列表(向量),散列表(一個映射的實現),字典,集合,堆棧,隊列等等。由於數組值可以是其他數組,因此樹和多維數組也是可能的。 - php.net

從我可以告訴它似乎它有一個地圖

+0

在平均情況下最小是O(1)但最壞的情況下是O( n)惡意處理:http://murilo.wordpress.com/2013/10/16/deeper-look-at-phps-array-worst-case/ – 2013-10-19 04:29:24

回答

5

因爲它就像一個哈希表的總體複雜性,你會被一個鍵訪問元素時有O(1)時間。

如果您正在循環訪問數組,那麼自然會有O(n)時間。

如果你有時間,你其實可以看看PHP的implementation of array here

2

訪問和迭代由@麥克·劉易斯形容到目前爲止

  • 設定值:O(1)
  • 追加:O(1)(與設置鍵值「長度」相同)
  • 上一個:O(n)(它是一個猜測,但應該適合,因爲它應該重寫現有的鍵)
  • Unset :O(1 )

錯過了什麼?

0

除了什麼@Mike劉易斯說,我要補充的是,在一個PHP數組元素佔據的52個字節(proof