目前,我正在攻读计算机科学课程的期末考试。其中一个问题很可能是关于如何结合运行时间的问题,所以我举一个例子。
我想知道,如果我创建了一个使用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),还是这些都不是?
我倾向于过度思考解决方案,所以如果我能得到任何关于结合运行时间的指导,我将非常感激。
非常感谢你。
答案 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/
我实际上发现它很有帮助,它可能无法回答你的问题,但我认为这会让你更自信地看到几次解释的主题。