欧几里得算法时间复杂度简单分析

本文介绍了欧几里得算法的时间复杂度分析,通过《数据结构与算法C++描述》中的例子,探讨了算法在平均和最坏情况下的迭代次数。在最坏情况下,当两个输入是相邻的斐波那契数时,通过数学归纳法证明了时间复杂度为O(logN)。此外,提到了拉梅定理作为更精确的步数计算公式,并鼓励读者深入学习算法与数学的关系。

前言

这个问题是在《数据结构与算法C++描述(第三版中文)》所遇到的,文中给出的迭代次数O(logN)的结果就像是教授所说的“显然”一样高深莫测,有点云里雾里的感觉!在“网罗”了一些资料后,在这里找到了自己想要的答案,笔者接下来就结合自己的理解列出文章中的求解过程。

数学是科学的“皇后”

在前言中提到那本书中也明确指出了欧几里得算法在实现过程理解上可能不是很难,但是想要得出其在平均情况下的性能需要大量的高度复杂的数学运算分析,书中给出了一个最终的迭代平均次数结果:

次数n = (12 * ln2 * lnN) / π ^ 2 + 1.47 (N为其中较小的那个数)

所以后面就只是考虑一个最坏的情况:M、N(M > N)是两个相邻的斐波那契数,程序是这样的(来源于该书):

long gcd( long m, long n) {
    while(n != 
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值