第一章 绪论
1. 程序开发过程:
① 分析阶段:将问题严格化,又称需求分析。
② 设计阶段:设计解决问题的算法,或叫解决问题的计算过程模型。是程序设计的核心
③ 编码阶段:用某种程序语言把第②步设计的方案实现。
④ 检查编译
⑤ 测试调试
2. 算法的性质
① 有穷性;②能行性;③确定性;④终止性;⑤输入/输出
3. 算法的常用设计模式
① 贪心法:根据已知的局部信息,完成尽可能多的工作。此方法可以得到正确解,但可能得不到最优解。
② 枚举法:列举所有可能的情况,筛选出问题的解,再从解中择优
③ 分治法:把复杂问题分解为子问题分别求解,再把解合起来得到原问题的解
④ 回溯法(搜索法)
⑤ 动态规划法
⑥ 分支限界法
4. 算法复杂度的描述
① 把空间或时间的开销描述为问题实例规模n的函数
② 即使是同一规模,有最好情况、最坏情况和平均情况。
③ 大O记法:只管复杂度的数量级,不管常量因子
④ 常用的复杂度函数:O(1), O(log n), O(n), O(n*log n), O(n^2), O(n^3), O(2^n)等
5. 数据结构的基本分类① 结构型数据结构:包括集合结构、序列机构、层次结构、树结构、图结构
② 功能性数据结构:包括栈、队列、字典等