启示:

算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示为一个或多个操作

目录:

  1. 算法特性:
  2. 算法设计的要求:
  3. 算法效率的度量方法
  4. 函数的渐近增长
  5. 算法的时间复杂度
  6. 常见的时间复杂度
  7. 最坏情况和平均情况
  8. 算法空间复杂度

一、算法特性

  • 输入输出
  • 有穷性
  • 确定性
  • 可执行性

二、算法设计的要求

  • 正确
  • 可读性
  • 健壮性
  • 时间效率高和存储量低

三、算法效率的度量方法

  • 事后统计方法:
  • 事前分析估算方法:

(程序在计算机上运行所消耗的时间取决于下列因素)

  1. 算法采用的方法:
  2. 编译产生的代码质量(软件支持)
  3. 问题的输入规模
  4. 机器执行指令的速度(硬件性能)

(运行时间取决于算法的好坏(最可靠的方法是计算对运行时间有消耗的基本操作的执行次数)和问题输入规模)

  分析一个算法的运行时,重要的是把基本操作的数量表示成输入规模的函数

四、函数的渐近增长

  • 给定两个函数f(n)和g(n),如果存在一个整数N,使得所有n>N,f(n)>g(n),我们所f的增长渐进快于g
  • 判断一个算法的效率,函数中的常熟和其他次要项常常可以忽略

五、算法时间复杂度

  • 进行算法分析是,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)的数量级。T(n)=O(f(n)),表示随着问题规模的增大,算法执行时间的增长率同f(n)的增长率
  • 推导大O阶方法
  1. 常数1取代运行时间中所有加法常数
  2. 修改后的运行次数函数中,只保留最高阶
  3. 最高阶的系数去掉
  • 常数阶,线性阶,对数阶,平方阶
  • O(1)<O(logn)<O(n)<O(nlogn)<O(n^2)<O(n^3)

六、最坏情况和平均情况

 

posted on 2019-09-10 17:30  凭栏听雨客  阅读(71)  评论(0编辑  收藏  举报