首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python中模运算符的时间复杂度

Python中模运算符的时间复杂度
EN

Stack Overflow用户
提问于 2016-02-04 07:35:24
回答 2查看 6.8K关注 0票数 7

我正在尝试确定我拥有的算法的时间复杂度,但我首先需要知道Python中%(模数)运算符的时间复杂度。

根据http://math.stackexchange.com上的this post,它的时间复杂度可能类似于O(log m log n),在某些特定情况下,它也可以优化为常数,但我想知道是否有人真的知道%的时间复杂度,这样我就可以正确地确定我的算法的整体时间复杂度。

当然,我知道实现之间的复杂性可能会有所不同,但我只对标准实现感兴趣。

EN

回答 2

Stack Overflow用户

发布于 2016-02-04 08:25:00

这并不容易确定,因为如果我们谈到整数数学,cpython使用不同的优化(例如,对于不超过机器字的整数,它可能是O(1),而对于其他整数,它可能是其他的)。因此有两种方法:第一种是查看cpython源代码,第二种是测量性能(例如使用timeit),然后基于实验点构建外推曲线。第二种方法更好,因为你会得到一个确切的结果,而不是猜测。对于简单的目的,构建实验点的图应该足够了,如果您想要更多,还可以使用一些回归分析方法(如最小二乘多项式拟合)。

下面是用cpython实现int的源代码(查找long_divrem和x_divrem例程):https://hg.python.org/cpython/file/tip/Objects/longobject.c

添加:对于无符号整数模数,它使用的算法来自Knuth的书,它是O(MN),其中M+1是商中的机器字的数量,N是余数中的机器字的数量。对于签名,它使用自己的实现

票数 2
EN

Stack Overflow用户

发布于 2016-02-04 08:37:21

对于大整数,Python除法(和模数)使用O(n^2)算法。乘法使用0(n^1.585)的Karatsuba乘法,但除法使用基本的“小学”除法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35189851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档