【发布时间】: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