1.2.1
数据(data):是客观事物的符号表示,是所有输入到计算机中并被计算机程序处理的符号的总称。如数学计算中用到的整数和实数,文本编辑中用到的字符串,多媒体程序处理的图形图像声音及动画等通过特殊编码定义后的数据。
数据元素(data element):是数据的基本单位,在计算机中通常作为一个整体来进行考虑和处理。
数据项(data item):是组成数据元素的、有独立含义的、不可分割的最小单位。
数据对象(data object):是性质相同的元素的集合,是数据的一个子集。
1.2.2数据结构
数据结构分为逻辑结构和存储结构两个层次。
1、逻辑结构
数据的逻辑结构是从逻辑关系上描述数据,它与数据的存储无关是独立于计算机的。可以看成是从具体问题抽象出来的数学模型。
两要素:数据元素、关系(数据元素之间的逻辑关系)
①集合结构:数据元素除了属于“同一集合”的关系外,别无其他关系。例如:确定一名同学是否为班级成员,只需将班级看做一个集合结构。
②线性结构:数据元素之间存在一对一的关系。例如,将学生信息按照其入学报到的时间先后顺序进行排列,将组成一个线性结构。
③树结构:数据元素之间存在一对多关系。例如,在班级中,班长管理多名组长,组长管理多名组员。
④图结构或网状结构
数据元素之间存在多对多的关系。例如,多位同学之间的朋友关系,任何两位同学之间都可以是朋友关系。
其中集合结构、树结构、图结构都属于非线性结构。
线性结构包括线性表、栈和队列、字符串、数组、广义表、。
非线性结构包括树、二叉树、有向图和无向图。
2、存储结构
数据对象在计算机中的存储表示数据的存储结构,也成为物理结构。把数据存储到计算机中时,通常要求既要存储各数据元素的数据,又要存储数据元素之间的逻辑关系,数据元素在计算机中用一个结点来表示。
(1)顺序存储结构:
一段连续的内存空间。
优点:随机访问
缺点:插入删除效率低,大小固定
(2)链式存储结构
不连续的内存空间
优点:大小动态扩展,插入删除效率高
缺点:不能随机访问。
1.2.3数据类型和抽象数据类型
(1)数据类型:是一个值的集合和定义在这个值集合上一组操作的总称。例如,c语言中的整型变量,其值集为某个区间上的整数,定义在其上的操作为加减乘除和取模等算术运算。
(2)抽象数据类型(abstract data type):一般指由用户定义的、表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。 具体包括三部分:数据对象、数据对象上关系的集合以及对数据对象的基本操作的集合。
格式如下:
Abstract data type 抽象数据类型名{
数据对象:<数据对象的定义>
数据关系:<数据关系的定义>
基本操作:<基本操作的定义>
}Abstract data type 抽象数据类型名
1.4.1算法的定义及特性
算法(algorithm):是为了解决某类问题而规定的一个有限长的操作序列。
①有穷性:一个算法必须在执行有穷步后结束,且每一步都必须在有穷时间内完成。
②确定性:对于每种情况下所执行的操作在算法中都有确切的规定。
③可行性:算法中的所有操作都可以通过已经实现的基本操作运算执行有限次来实现。
④输入:有零个或多个输入。
⑤输出:有一个或多个输出。
1.4.2评价算法优劣的基本标准
①正确性
②可读性
③健壮性
④高效性
1.4.3算法的时间复杂度