算法的定义以及特性
a.算法定义
算法定义:为了解决某类问题的一个有限长的操作序列
b.算法特性
(1)有穷性:算法必须在有穷步后完成而且必须在有穷时间内完成
(2)确定性:每一步操作明确,不会有二义性
(3)可行性:算法的每一步都可以通过以及实现的基本操作算法执行有限次来实现
(4)输入:有0个或者多个输入
(5)输出:有一个或者多个输出(无输出的算法没有意义)
算法的评价标准
a.引言
引言:算法的提出是为了解决问题,既然涉及到解决问题,那么我们就难免涉及到评价,这个算法到底解决问题快不快,实现这个算法有多难等等。
b.评价算法的标准
(1)正确性:能在有限时间内得出正确的结果
(2)可读性:是否便于理解
(3)健壮性:对于一些非法数据是否能够很好的处理
(4)高效性:包括时间和空间两个方面,时间方面通常用时间复杂度衡量,空间方面常用空间复杂度衡量
算法的时间复杂度与空间复杂度
引言:衡量算法的方法主要有两类:
- 事后统计法(缺点:必须把算法转化为程序而且结果依赖于计算机软件和硬件,容易掩盖算法本身的优劣)
- 事前估计法
通常采用事前估计法来来衡量算法效率。
a.时间复杂度
(1)相关定义:
问题规模:问题的数量级大小,是输入量的多少,是问题大小的本质表示
语句频度:一条语句的重复执行次数
基本语句:算法中重复执行次数
(2)时间复杂度:
(3)常见的时间复杂度阶数:
复杂度比较:
(5)最好与最坏时间复杂度以及平均复杂度:
最好与最坏:算法在最好情况下的复杂度是最好时间复杂度,在最坏情况下的时间复杂度为最坏时间复杂度。
平均复杂度:在所有可能情况下,按照输入实际例子等概率出现,计算加权平均值
b.空间复杂度