【问题标题】:Running time analysis for addition of two n digit numbers两个n位数字相加的运行时间分析
【发布时间】:2012-09-29 04:38:40
【问题描述】:

我想看看两个数字相加的时间复杂度是多少。这里写成加法是 n 平方。 Algo Notes

第 4 页第二段。

现在,如果我取 99 + 99,我将执行两个加法运算和两个进位运算 + 将 prev 的进位添加到新结果并合并所有内容。

我不确定我怎么能说这是 n 平方。

这让我认为我应该用二进制表示数字,这将使 01100011 成为 8 位,这将导致 8 个加法加上 4 个进位加法。这看起来像 n 平方,但我不确定。

有没有不同的方式来看待这个?它是怎样的?您可以在每个数字上运行一个循环并添加位置位置,即 10*sum+100*sum 等,但我可以在一个 for 循环中很好地做到这一点。

【问题讨论】:

  • 您的问题有些不清楚,表明您可能认为更改数基会改变加法的复杂性。不会的。

标签: algorithm time-complexity


【解决方案1】:

你指的那句话说:

添加也不是免费的。 两个n位数字相加需要O(n)时间,所以迭代算法的运行时间是O(n2)。

我将您第一次阅读本文时可能遗漏的相关单词加粗。

所指的“迭代算法”是针对前几页中讨论的其他内容的算法,而不是用于添加两个 n 位数字的算法。

【讨论】:

  • 我确实明白了这一点,我想知道为什么迭代算法需要 n 平方
  • 因为它需要 n 个数字相加,对于某些 k,平均大小为 kn/2。因此,您总共添加了 O(n^2) 个数字。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多