数据:信息的载体,能被计算机识别、存储和加工处理。
数据元素:数据的基本单位,可由若干个数据项组成,数据项是数据的不可分割的最小单位。比如一本书中的书目信息是数据元素,则书名、作者等具体信息就是数据项。
数据结构:数据之间的相互关系,即数据的组织形式。通常有下列四列基本结构:
集合:结构中的数据元素之间除了同属于一个集合之外,没有其他关系;
线性结构:结构中的数据元素之间存在一个对一个的关系;
树形结构:结构中的数据元素之间存在一个对多个的关系;
图状结构或网状结构:结构中的数据元素之间存在一个对多个的关系。
如图所示
数据结构包括数据的逻辑结构,存储结构。
逻辑结构是数据结构中的数据元素之间的逻辑关系。
存储结构又称为物理结构,是数据结构在计算机中的映像。它包括数据元素的表示和关系的表示。在计算机中表示信息的最小单位是二进制数中的一位,叫做bit(位)。可以用一个若干位组合起来形成的一个位串来表示一个数据元素。这个位串就叫做结点。结点可以看成是数据元素在计算机中的映像。
数据元素之间的关系在计算机中有两种不同的表示方法:顺序映像和非顺序映像,并由此得到两种不同的存储结构:顺序存储结构和链式存储结构。
顺序映像是借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系。
非顺序映像是借助指示元素存储地址的指针表示数据元素之间的逻辑关系。
数据类型:一个值的集合和定义在这个值集上的一组操作的总称。例如C语言中的整形变量,其值集为某个区间上的整数,定义在其上的操作为加减乘除等算术运算。我们可以通过高级语言中的数据类型来描述数据结构中的存储结构。
高级语言中的数据类型可以分为两类:原子类型和结构类型。
原子类型是不可分解的,比如整形、字符型等。
结构类型是可以分解的,比如数组。
另外,不仅仅是高级语言中可以体现,在计算机中,每个部件,比如硬件系统、操作系统等都提供了一组原子类型和结构类型。
算法
算法是对特定问题求解步骤的一种描述。
算法五特性:
有穷性:一个算法必须是在执行有穷步之后结束,且每一步都可以在有穷时间内完成。
确定性:算法只有唯一的一条执行路径。就是说对于相同的输入只能得到相同的输出。
可行性:一个算法是能行的。
输入:有零个或多个输入。
输出:有一个或者多个输出。
一个好算法的评价标准:
算法是正确的。
执行所耗时间。
执行所耗存储空间。
易于理解编码调试。
算法的时间复杂度T(n):是该算法的时间耗费,是求解问题规模n的函数。记为O(n)。
时间复杂度按数量级递增排列依次为:常数阶O(1)、对数阶O(log2n)、线性阶O(n)、线性对数阶O(nlog2n)、平方阶O(n^2)、立方阶O(n^3)、……k次方阶O(n^k)、指数阶O(2^n)。
算法的空间复杂度S(n):是该算法的空间耗费,是求解问题规模n的函数。