时间复杂度找到数组的长度

时间:2017-07-14 01:12:27

标签: arrays time-complexity

我对len()函数的时间复杂度有点困惑。

我在很多不同的帖子中读过,在{python}中查找数组的长度为O(1)len()函数与其他语言类似。

这怎么可能?您是否不必遍历整个数组来计算其占用的索引数量?

1 个答案:

答案 0 :(得分:4)

  

您是否不必遍历整个数组来计算其占用的索引数量?

不,你没有。

在构建算法时,您通常可以随时交换空间。

例如,在创建集合时,请分配一个包含大小的单独变量。然后在向集合中添加项目时递增,在删除项目时递减它。

然后,瞧,只需访问该变量就可以在O(1)时间内获得集合的大小。

这似乎是Python实际上做的事情,根据this page,其中指出(检查Python源代码显示这是请求大量对象大小时的操作):

  

Py_SIZE(o) - 此宏用于访问Python对象的ob_size成员。它扩展为(((PyVarObject*)(o))->ob_size)