如何在代码中获得各种算法分析因子?

时间:2012-09-12 16:58:02

标签: algorithm analysis

我正在尝试准备一个演示文稿来向我的同事解释算法分析的基础知识 - 其中一些人之前从未有过关于这个主题的讲座,但是每个人都至少有几年的编程背后和好的数学背景,所以我想我可以教这个。我可以很好地解释这些概念,但是我需要一些代码结构或模式的具体例子来导致因素,所以我可以演示它们。

几何因子(n,n ^ 2,n ^ 3等)是简单的嵌入式循环,使用相同的标记,但我迷失了如何描述和展示一些不太常见的。

我想合并指数(2 ^ n或c ^ n),对数(n log(n)或只是log(n))和 factorial (n!)因素。什么是一些简短,可教的方法来获取这些代码?

4 个答案:

答案 0 :(得分:3)

一种分而治之的算法,每次将问题分成两半时执行一定量的工作是O(log n)。例如二元搜索。

分而治之算法,每次将问题分成两半时执行线性工作量为O(n * log n)。例如合并排序。

指数和阶乘可能最好通过分别迭代集合的所有子集或集合的所有排列来说明。

答案 1 :(得分:2)

N!问题很简单。 NP-complete n有很多!时间问题,例如the travelling salesman problem

答案 2 :(得分:2)

指数:naive Fibonacci implementation

n log(n)或只记录log(n):SortingBinary seach

因素:天真的旅行推销员解决方案。 NP完全问题的许多天真的解决方案。

答案 3 :(得分:0)

有疑问选择其中一种排序算法 - 每个人都知道他们应该做什么,因此他们很容易解释与复杂性相关的东西:Wikipedia has a quite good overview