在讲座中,我的教授正在解释各种算术运算的大时代。他告诉我们,长分是在O(n ^ 2)附近。在网上看,似乎这是正确的,但为什么呢?
任何人都可以详细说明为什么长分在O(n ^ 2)时间?
答案 0 :(得分:1)
你正在划分的数字的位数是二次方,这意味着要将n
除以m
,你需要O((log max(m,n))^2)
时间。这是因为每次减法都需要O(log max(m, n))
次。
可以获得解释here on StackOverflow。
答案 1 :(得分:0)
首先,一些定义:
商的每个数字的生成需要两个操作:
计算复杂度不取决于股息的大小。例如,如果要计算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)。