数据结构学习笔记(三)算法的基本概念
1.算法
算法可以理解为有基本运算及规定的运算顺序所构成的完整的解题步骤。或者看成按照要求设计好的有限的确切的计算序列。
2.算法的特征
(1)有穷性
一个算法必须保证执行有限步之后结束。
(2)确定性
算法的每一步必须有确定的定义。
(3)输入
一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入时指算法本身确定了初始条件。
(4)输出
一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是没有意义的。
(5)可行性
算法中的所有操作都必须可以通过已经实现的基本操作机型运算,并在有限次内实现,而且人们用笔和纸做有限次运算后也可完成。
3.算法的设计目标
算法设计的目标为正确性、可读性、健壮性和算法效率。其中算法效率通过算法的时间复杂度和空间复杂度来描述。
(1)正确性
要求算法能够正确地执行预先规定的功能和性能要求。这是最重要的也是最基本的标准。
(2)可读性
要求算法易于人的理解
(3)健壮性
要求算法有很好的容错性,能够对不合理的数据进行检查。
(4)高效率与低存储量需求
算法的效率主要是指算法的执行时间。对于同一个问题如果有多种算法可以求解,执行时间短的算法效率高。算法的存储量指的是算法执行过程中所需要的最大存储空间。高效率和低存储量这两者都与问题的规模有关。
4.算法的时间复杂度
将算法中基本操作的执行次数作为算法的时间复杂度。T(n)=O(f(n)中增长最快的项/此项的系数)。
计算算法时间复杂度 的步骤如下:
(1)确定算法中的基本操作,以及问题的规模。
(2)根据基本操作执行情况计算出规模n的函数f(n),并确定时间复杂度为T(n) = O(f(n)中增长最快的项/此项的系数)。
5。算法的空间复杂度
算法的空间复杂度指算法在运行时所需存储空间的度量,主要考虑在算法运行过程中临时占用的存储空间的大小(和时间复杂度一样,以数量级的形式给出)。