长期分裂的复杂性是什么?

时间:2016-03-30 17:49:49

标签: algorithm time-complexity big-o

在讲座中,我的教授正在解释各种算术运算的大时代。他告诉我们,长分是在O(n ^ 2)附近。在网上看,似乎这是正确的,但为什么呢?

任何人都可以详细说明为什么长分在O(n ^ 2)时间?

2 个答案:

答案 0 :(得分:1)

你正在划分的数字的位数是二次方,这意味着要将n除以m,你需要O((log max(m,n))^2)时间。这是因为每次减法都需要O(log max(m, n))次。

可以获得解释here on StackOverflow

答案 1 :(得分:0)

首先,一些定义:

  • 除法运算:股息/除数=商
  • n =股息中的位数
  • m =除数中的位数
  • q =商中的位数

商的每个数字的生成需要两个操作:

  1. 除数乘以一位。这需要O(m)时间。
  2. 从股息中减去该结果。这需要O(m)时间。它不依赖于n,因为您不需要从股息的每个数字中减去它。

计算复杂度不取决于股息的大小。例如,如果要计算1/3至5位(.33333),将需要5次迭代,但是如果要计算20位(.33333333333333333333),则将需要20次迭代。

除数中的位数实际上也不是因数。假设您要计算1 / pi,并且希望结果精确到4位。您不需要pi的每一位来计算它(这很方便,因为有很多!)。您可以忽略除数以外的所有数字,但前几位(其中几位约为q)。在这种情况下,使用pi的4个最高有效数字就可以将1 / pi精确到4个位置:1 / 3.141〜= 0.3183(在上下文中,具有20位数字的1 / pi为0.31830988618379067153153)。

因此,您需要进行q次迭代,并且每次迭代中都有O(q)个工作,因此长除法的计算复杂度为O(q ^ 2)。