算法(Algorithm):是对特定问题求解方法(步骤)的一种描述,是指令的有限序列,其中每一条指令表示一个或多个操作。
5个重要特性:① 有穷性: 一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。 ② 确定性:算法中每一条指令必须有确切的含义。不存在二义性。且算法只有一个入口和一个出口。 ③ 可行性: 一个算法是能行的。即算法描述的操作都可以通过已经实现的基本运算执行有限次来实现。④ 输入: 一个算法有零个或多个输入,这些输入取自于某个特定的对象集合。⑤ 输出: 一个算法有一个或多个输出,这些输出是同输入有着某些特定关系的量。
算法设计的要求
① 正确性(Correctness ): 算法应满足具体问题的需求。 ② 可读性(Readability): 算法应容易供人阅读和交流。可读性好的算法有助于对算法的理解和修改。 ③ 健壮性(Robustness): 算法应具有容错处理。当输入非法或错误数据时,算法应能适当地作出反应或进行处理,而不会产生莫名其妙的输出结果。 ④ 通用性(Generality): 算法应具有一般性 ,即算法的处理结果对于一般的数集合都成立。
算法描述
自然语言:用自然语言来描述算法的优点是简单且便于人们对算法的阅读。缺点是不够严谨。
N-S 盒图-程序流程图: 其特点是描述过程简洁、明了。
程序代码: 直接使用程序设计语言并不容易,而且不太直观,常常需要借助于注释才能使人看明白。
代码: 伪码语言介于高级程序设计语言和自然语言之间,它忽略高级程序设计语言中一些严格的语法规则与描述细节。
六种计算算法时间的多项式是最常用的,其关系为:O(1)<O(㏒n)<O(n)<O(n㏒n)<O(n² )<O( n3)
2、线性表
线性结构是最常用、最简单的一种数据结构。而线性表是一种典型的线性结构。其基本特点是线性表中的数据元素是有序且是有限的。在这种结构中: ① 存在一个唯一的被称为“第一个”的数据元素;② 存在一个唯一的被称为“最后一个”的数据元素; ③ 除第一个元素外,每个元素均有唯一一个直接前驱; ④ 除最后一个元素外,每个元素均有唯一一个直接后继。
线性表(Linear List) :是由n(n≧0)个数据元素(结点)a1,a2, …an组成的有限序列。该序列中的所有结点具有相同的数据类型。其中数据元素的个数n称为线性表的长度。
注意:
1.数据元素ai是一个抽象的符号
2. ai可取各种数据类型
3. 一般情况下,同一线性表中的元素具有相同的数据类型
4. i是元素的序号 (1<=i<=n)