启示:
算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示为一个或多个操作
目录:
- 算法特性:
- 算法设计的要求:
- 算法效率的度量方法
- 函数的渐近增长
- 算法的时间复杂度
- 常见的时间复杂度
- 最坏情况和平均情况
- 算法空间复杂度
一、算法特性
- 输入输出
- 有穷性
- 确定性
- 可执行性
二、算法设计的要求
- 正确
- 可读性
- 健壮性
- 时间效率高和存储量低
三、算法效率的度量方法
- 事后统计方法:
- 事前分析估算方法:
(程序在计算机上运行所消耗的时间取决于下列因素)
- 算法采用的方法:
- 编译产生的代码质量(软件支持)
- 问题的输入规模
- 机器执行指令的速度(硬件性能)
(运行时间取决于算法的好坏(最可靠的方法是计算对运行时间有消耗的基本操作的执行次数)和问题输入规模)
分析一个算法的运行时,重要的是把基本操作的数量表示成输入规模的函数
四、函数的渐近增长
- 给定两个函数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取代运行时间中所有加法常数
- 修改后的运行次数函数中,只保留最高阶
- 最高阶的系数去掉
- 常数阶,线性阶,对数阶,平方阶
- O(1)<O(logn)<O(n)<O(nlogn)<O(n^2)<O(n^3)
六、最坏情况和平均情况