View on GitHub

我的博客

杂七杂八啥都有

2019.8.30

Software Enegeering

  1. Analyze
  2. Build
  3. Design
  4. Verify
  5. Analyze
  6. Code
  7. Test
  8. Refine
  9. Optimize
  10. Maintain

Algorithm - 算法

算法是程序的核心,算法的好坏决定程序的处理效率

设计算法的基本过程:

  1. 通过对问题进行详细地分析,抽象出相应的数学模型
  2. 确定需要的数据结构,在此基础上设计解决问题的方法
  3. 使用适当的编程语言将其转换为程序
  4. 调试并运行程序,从而解决问题

实验不能证明你的解决方法是对的,只能确定是否可靠
算法可以证明你的解决方法是否对错

算法的特性:

  1. 有穷性:算法必须在执行有限步骤后结束
  2. 确定性:算法中每一个步骤都有明确的含义,无二义性
  3. 可行性
  4. 描述

选择算法描述语言的准则:

  1. 该语言应具有描述数据结构和算法的基本功能

算法不考虑代码的行数

算法的评价:

程序所用内存单元数量 = 算法所处理的数据占据的内存单元数量 + 处理数据所需要的额外的内存单元数量

时间复杂度与空间复杂度存在折中情况,牺牲时间换空间,或者牺牲空间换时间

时空复杂度的度量

O(1) < O(log n) < O(n) < O(nlogn) < O(n ^ 2) < O(n ^ 3) < O(2 ^ n)
当该算法的时间复杂度的上界与下界相同,则得到最优的算法

基本术语

TOP