需要帮助学习运行时间

时间:2011-04-22 20:15:52

标签: binary-search performance insertion-sort

目前,我正在攻读计算机科学课程的期末考试。其中一个问题很可能是关于如何结合运行时间的问题,所以我举一个例子。

我想知道,如果我创建了一个使用Insertion Sort预处理输入的程序,然后使用二进制搜索搜索值“X”,我将如何结合运行时间来查找最佳,最差和平均的案例时间整体计划的复杂性?

例如......

插入排序
最坏情况O(n ^ 2)
最佳案例O(n)
平均情况O(n ^ 2)

二进制搜索 最坏情况O(登录)
最佳案例O(1)
平均情况O(logn)

最坏的情况是O(n ^ 2 + logn),还是O(n ^ 2),或者两者都不是?
最佳案例是O(n)吗? 平均情况是O(nlogn),O(n + logn),O(logn),O(n ^ 2 + logn),还是这些都不是?

我倾向于过度思考解决方案,所以如果我能得到任何关于结合运行时间的指导,我将非常感激。

非常感谢你。

2 个答案:

答案 0 :(得分:1)

您通常不会“合并”(如添加)运行时间以确定整体效率等级,而是采用每个最差,平均和最佳时间最长的那个案件。

因此,如果你要执行插入排序然后在数组中找到元素X之后进行二进制搜索,最坏的情况是O(n ^ 2),最好的情况是O(n) - 所有这些都来自插入排序,因为它花费的时间最长。

答案 1 :(得分:0)

根据我的有限研究,(我们还没有达到摊销,所以这可能是吉姆其余部分正确的地方),但基本上你只是基于整体算法中最慢的人。

这似乎是一本关于算法主题的好书(我没有太多要比较的): http://www.amazon.com/Introduction-Algorithms-Third-Thomas-Cormen/dp/0262033844/ref=sr_1_1?ie=UTF8&qid=1303528736&sr=8-1

麻省理工学院也在其网站上有关于算法的完整课程,这里也是链接! http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-introduction-to-algorithms-sma-5503-fall-2005/

我实际上发现它很有帮助,它可能无法回答你的问题,但我认为这会让你更自信地看到几次解释的主题。