【发布时间】:2013-12-11 21:04:04
【问题描述】:
我必须计算算法的时间复杂度,但我在其中调用 os.walk,我不能将其视为单个操作,而是很多。
os.walk 的来源让我感到困惑,因为文件树可能以多种方式排序(一个文件夹中的 1.000.000 个文件或每个文件夹中的一个文件和 1.000.000 个文件夹。
我不是时间复杂性方面的专家,我不能确定我应该只考虑一个操作还是多个操作,所以这让我陷入了困境。不要计算 simlink 标志,我假设它设置为 false 以忽略它们。
PD:我在 Komodo IDE 中找到了 os.walk 的源代码,但我不知道如何找到它们作为 javadocs。
【问题讨论】:
-
我不知道你所说的 Python 的“javadocs”是什么意思。但是您可以在主仓库中在线找到所有源代码。例如,3.3 的
os.walk是 here。 -
您不一定需要知道每个函数需要多少次操作,只要它对您正在调查的变量是不变的即可。如果 N 与您目录中的文件数量完全不相关,那么您可以将
walk视为常数时间。 -
感谢源链接。我一直在寻找这样的东西,但没有运气。我在 IDE 中找到了它,但这是一个便宜的技巧。
标签: python python-3.x time-complexity