一、算法
数据元素之间的关系有逻辑关系和物理关系,对应的操作有逻辑结构上的操作功能和具体存储结构上的操作实现。
通常把具体存储结构上的操作实现步骤或过程称为算法。
算法有五个重要的特性1)有穷性 2)确定性 3)可行性 4)有输入 5)有输出
算法设计应满足以下几条目标: 1)正确性 2)可使用性 3)可读性 4)健壮性 5)高效率和低存储量需求
二、 算法时间复杂度分析
通常有两种衡量算法效率的方法:事后统计法和事前估算法。但是由于事后统计法必须执行后才知道算法的效率和容易受到其他因素的影响,一般使用事前估算法。
当一个算法用高级语言实现后,除了机器性能的硬件因素和软件因素,仅考虑算法本身效率高低,依赖于问题的规模。
一个算法是由控制结构(顺序、分支和循环三种)和原操作(指固有数据类型的操作,如n++等)构成的,则算法时间取决于两者的综合效果。
为了便于比较同一问题的不同算法,通常从算法中选取一种对于所研究的问题来说是基本运算的原操作。
算法执行时间大致为基本运算所需的时间与其运算次数(也称为频度)的乘积。
通常把算法中包含基本运算次数的多少称为算法的时间复杂度,也就是说,一个算法的时间复杂度是指该算法的基本运算次数。 算法中基本运算次数T(n)是问题规模n的某个函数f(n),记作: T(n)=O(f(n))。