【问题标题】:Time complexity exercise时间复杂度练习
【发布时间】:2014-12-19 09:22:33
【问题描述】:

我在解决练习题时遇到了问题。上下文是对运行时间的渐近分析。有给定的算法,如插入排序等。结果应该是输入的 theta 表示法(渐近精确):{N, N-1, ..., N/2, 1, 1, 2, 3, ... , N/2}。问题是:如何计算运行时间?我的意思是,计算最坏情况或最好情况是没有问题的。我的问题是如何处理输入以及如何在计算中考虑它们。

感谢您的帮助!

问候 GR

【问题讨论】:

  • 您是否尝试过列出程序对(4, 3, 2, 1, 1, 2)(6, 5, 4, 3, 1, 1, 2, 3) 等简单输入实际执行的步骤?你能“列出”一般情况 N 的步骤吗?
  • 首先感谢您的回答。 :-) 我只是计算所做的添加和比较。所以在插入排序中有 n(n-1)\2 操作。在这种情况下,Theta 是 Theta(n*n)。我现在的问题是,如何将其映射到真实输入?
  • 如果你真的对插入排序的最坏情况复杂度进行了计数,那么你可以通过第 10 次对数字 1 到 100 进行排序的操作来判断比较了哪些两个数字。即计数操作正在将操作映射到实际输入。这实际上是一个更难的问题,因为您还必须确定什么输入是最坏的情况,而这里的输入已经为您描述了。

标签: time complexity-theory analysis


【解决方案1】:

见 cmets:

您是否尝试过列出程序对一些简单输入(例如 (4, 3, 2, 1, 1, 2) 或 (6, 5, 4, 3, 1, 1, 2, 3))实际执行的步骤?你能“列出”一般情况 N 的步骤吗? – 大卫 K 2014 年 10 月 23 日 16:32

首先感谢您的回答。 :-) 我只是计算所做的添加和比较。所以在插入排序中有 n(n-1)\2 操作。在这种情况下,Theta 是 Theta(n*n)。我现在的问题是,如何将其映射到真实输入? – GR_ 2014 年 10 月 23 日 18:31

如果您实际上已经计算了插入排序的最坏情况复杂度的操作,那么您可以通过第 10 次操作来判断比较了哪两个数字,以便对数字 1 到 100 进行排序。也就是说,计数操作是将操作映射到真实输入。这实际上是一个更难的问题,因为您还必须确定什么输入是最坏的情况,而这里已经为您描述了输入。 – 大卫 K 2014 年 10 月 23 日 19:01

【讨论】:

    猜你喜欢
    • 2013-09-24
    • 2016-02-13
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    相关资源
    最近更新 更多