Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 如何在代码中获得各种算法分析因素?_Algorithm_Analysis - Fatal编程技术网

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

Algorithm 如何在代码中获得各种算法分析因素?,algorithm,analysis,Algorithm,Analysis,我正试图准备一个演讲,向我的同事解释算法分析的基础知识——他们中的一些人以前从未听过关于这一主题的讲座,但每个人都有至少几年的编程经验和良好的数学背景,所以我想我可以教这门课。我可以很好地解释这些概念,但我需要一些导致因素的代码结构或模式的具体示例,以便演示它们 几何因子(n,n^2,n^3等)很简单,使用相同的哨兵嵌入循环,但我不知道如何描述和展示一些不太常见的 我想在演示中加入指数(2^n或c^n)、对数(n log(n)或仅仅是log(n))和因子(n!)因子。在代码中有哪些简短的、可教的

我正试图准备一个演讲,向我的同事解释算法分析的基础知识——他们中的一些人以前从未听过关于这一主题的讲座,但每个人都有至少几年的编程经验和良好的数学背景,所以我想我可以教这门课。我可以很好地解释这些概念,但我需要一些导致因素的代码结构或模式的具体示例,以便演示它们

几何因子(n,n^2,n^3等)很简单,使用相同的哨兵嵌入循环,但我不知道如何描述和展示一些不太常见的


我想在演示中加入指数(2^n或c^n)、对数(n log(n)或仅仅是log(n))和因子(n!)因子。在代码中有哪些简短的、可教的方法呢?

每次将问题一分为二时都要做一定量工作的分治算法是
O(logn)
。例如,二进制搜索


一种分而治之的算法是
O(n*logn)
,它在每次将问题分成两半时都会做线性工作量。例如,合并排序


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

n!问题很简单。有许多NP完全n!时间问题,如指数:

n log(n)或仅log(n):和


阶乘:天真的旅行推销员解决方案。NP完全问题的许多幼稚解决方案。

毫无疑问,选择一种排序算法——每个人都知道它们应该做什么,因此它们很容易解释与复杂性相关的东西:

对于极客来说:没有证明旅行推销员真的需要阶乘时间,因为没有证明p=NP。当然,它可以在不超过阶乘时间的情况下完成:-)