数据结构和算法德国大学课件

preview
需积分: 0 0 下载量 35 浏览量 更新于2011-08-16 收藏 735KB PDF 举报
根据提供的信息,我们可以总结出以下知识点: ### 数据结构与算法:德国大学课件知识点解析 #### O-Notation(大O表示法) - **定义**: - 大O表示法是用来描述算法运行时间上界的一种记号。它提供了一个算法在最坏情况下的运行时间的上界。 - 如果我们有一个函数`g(n)`,我们说`g(n) = O(n^k)`,意味着存在一个常数`c`和一个非负整数`n0`,使得对于所有`n > n0`都有`g(n) ≤ c * n^k`成立。 - **示例**: - 给定一个函数`g(n) = 4n^2 - 2n + 2`,可以得出这是一个二次多项式,并且满足`g(n) = O(n^2)`。 - 通过进一步分析,可以看出随着输入值`n`的增长,`4n^2`项将主导整个表达式的增长速度,因此其他项可以被忽略。 - **图形解释**: - 图形上,大O表示法可以通过对比不同函数的增长趋势来直观理解。例如,给定一个立方函数和一个二次函数,随着`n`的增加,立方函数的增长速度最终会超过二次函数。 - 重要的是要注意,大O表示法不是给出特定的函数`g(n)`,而是给出所有满足特定条件的一组函数集合。 - **总结**: - 大O表示法提供了一个算法运行时间的最坏情况上界,但这并不意味着算法实际上会达到这个上界。 - `O(f(n))`表示的是所有满足条件`g(n) ≤ c * f(n)`的函数`g(n)`的集合。 - 对于一个`k`阶多项式来说,其渐进行为的时间复杂度为`O(n^k)`。 - 在实际应用中,系统依赖的常数`c`通常是未知的,并不一定很小。 - **重要的计算规则**: - 常数项:任何常数`c`都等于`O(1)`。 - 同阶函数相加:`O(f(n)) + O(f(n)) = O(f(n))`。 - 异阶函数相加:`O(f(n) + g(n)) = max(O(f(n)), O(g(n)))`。 - 常数倍乘:`c * f(n) = O(f(n))`。 - 函数相乘:`O(f(n)) * O(g(n)) = O(f(n) * g(n))`。 - 分支选择:在一个分支语句中,复杂度是条件判断成本`O(1)`加上最长路径的成本。 #### 应用实例 - **分支结构**: - 如果有一个包含两个分支的程序片段,其中一个分支的时间复杂度为`f1(n)`,另一个分支的时间复杂度为`f2(n)`,则该程序片段的总复杂度为`O(max(f1(n), f2(n)))`。 通过以上总结,我们可以了解到大O表示法在评估算法效率时的重要性,以及如何通过具体例子和规则来理解和应用这一概念。这对于学习和研究数据结构与算法的初学者来说是非常有用的。
CSDNLMH
  • 粉丝: 0
  • 资源: 3
上传资源 快速赚钱
voice
center-task 前往需求广场,查看用户热搜