数据结构是用来处理非数值计算问题的数学模型,研究其中的操作对象以及操作对象之间的关系的学科。
数据元素是数据的基本单位,例如图中的一个顶点,树中的一个分支,信息表中的一名学生记录。
数据项组成数据元素,例如学生信息表中的学号,姓名和性别。
数据对象是性质相同的数据元素的集合,是数据的一个子集。例如,学生信息表,26个英文字母的集合。
数据结构是相互之间存在一种或者多种特定关系的数据元素的集合。分为逻辑结构和存储结构。
逻辑结构从逻辑关系上描述数据,与数据的存储无关,是从具体问题抽象出来的数学模型。两个要素:数据元素、关系。四种基本结构:集合、线性、树、图。
存储结构(物理结构)是数据对象在计算机中的存储表示,数据元素在计算机内用一个结点来表示。分为顺序存储结构和链式存储结构。
(1)顺序存储结构
通常用数组来表述。
(2)链式存储结构
结点后面加下一个接点的首地址,即指针。
数据类型:整形,实型、字符型、数组等。
抽象数据类型(Abstract Data Type,ADT)是用户定义,表示应用问题的数学模型。包括三部分:数据对象、数据对象上关系的集合、对数据对象基本操作的集合。格式如下:
ADT抽象数据类型名{
数据对象:<数据对象的定义>
数据关系:<数据关系的定义>
基本操作:<基本操作的定义>
}ADT 抽象数据类型名
基本操作定义格式为:
基本操作名(参数表)
初始条件:<描述>
操作结果:<描述>
算法是为了解决某类问题而规定的一个有限长的操作序列。算法具有五个特性:有穷性、确定性、可行性、输入和输出。一个算法的优劣应该从以下四方面来评价:正确性、可读性、健壮性和高效性。
算法分析的两个主要方面是分析算法的时间复杂度和空间复杂度,以考察算法的时间和空间效率。一般情况下,鉴于运算空间较为充足,故将算法的时间复杂度作为分析的重点。算法执行时间的数量级称为算法的渐近时间复杂度,T(n)= 0(f(n)),它表示随着问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,简称时间复杂度。
算法的时间复杂度取决于( D )。
A.问题的规模 B.待处理数据的初态 C.计算机的配置 D.A和B
算法的时间复杂度不仅与问题的规模有关,如某些排序的算法,其执行时间与待排序记录的初始状态有关。称算法在最好情况下的时间复杂度为最好时间复杂度,指的是算法计算量可能达到的最小值;称算法在最坏情况下的时间复杂度为最坏时间复杂度,指的是算法计算量可能达到的最大值;算法的平均时间复杂度是指算法在所有可能情况下,按照输入实例以等概率出现时,算法计算量的加权平均值,通常只讨论算法在最坏情况下的时间复杂度
求时间复杂度
x=n;//n>l
y=0;
while (x>=(y+l) *(y+l))
y++;
解:x>=(y+l) *(y +l) =》 y<=x^0.5-1 =》 y <= n^0.5 =》 o(n^0.5)
1.可以用(抽象数据类型)定义一个完整的数据结构 (数据对象,数据关系,基本操作集)
2.以下属于逻辑结构的是(C)
A.顺序表 B. 哈希表 C. 有序表 D.单链表
解:有序表指关键字有序的线性表,仅表述逻辑关系。而顺序表和哈希表表示顺序存储结构的线性表,单链表表示链式存储结构的线性表。
3.以下与存储结构无关的术语是(D)
A.循环队列 B.链表 C.哈希表 D.栈
循环队列是用顺序表表示的队列。
4.链式存储设计时,结点内的存储单元地址(一定连续) 结点内
5.下面说法错误的是(A)
A.算法原地工作的含义是算法不需要任何额外的辅助空间
B.在相同规模n下,复杂度为o(n)的算法在时间上总是优于o(n^2)的算法
C.所谓时间复杂度,是指最坏情况下估算算法执行时间的一个上界
D.同一个算法,实现语言的级别越高,执行效率越低。
解:1.算法原地工作是指算法所需的辅助空间是常量。4.教材原话。