数据结构的研究内容
一般来说,使用计算机解决问题大致需要以下几个步骤:首先从具体问题中抽象出一个适当的数学模型,然后设计一个解此数学模型的算法,最后编写出程序,进行测试和修改,直至得到最终解答。
数据结构的基本概念和相关术语
- 数据
数据是对客观事物的符号表示
- 数据元素
数据元素是数据中相对独立的基本单元,是数据中的一个个体.
- 数据对象
数据对象是性质相同的数据元素的集合,是数据的一个子集
- 数据结构
在客观世界中,任何事物和活动都不是孤立存在的,在一定程度上都会相互影响,相互联系,甚至相互制约。
根据数据元素之间关系的不同特性,通常有以下4类基本结构:
1)集合,即数据对象中的数据元素之间除了具有“同属于一个集合”的关系外,别无其它关系。
2)线性结构,即数据对象中的数据元素之间存在一对一的先后顺序关系。
3)树结构,即数据对象中的数据元素之间存在一对多的层次关系。
4)图结构,即数据对象中的数据元素之间存在多对多的任意关系。
数据结构可以形式化地描述为:数据结构是一个二元组
Data_Structure=(D,R)
其中,D是数据元素的有限集;R是D上关系的集合。
数据的存储结构通常有以下几种
1)顺序存储结构
2)链式存储结构
3)索引存储结构
4)散列存储结构
- 数据类型和抽象数据类型
数据类型是与数据结构密切相关的一个概念。
抽象数据类型
ADT 抽象数据类型名{
数据对象:<数据对象的定义>
数据关系:<数据关系的定义>
基本操作:<基本操作的定义>
}ADT 抽象数据类型名
算法与算法分析
程序=数据结构+算法
算法的概念
算法是对特定问题求解步骤的一种描述,是求解特点问题的一些指令的集合
一个完整的算法应具有以下几个基本特征
1)输入
2)输出
3)有穷性
4)确定性
5)可行性
算法效率和存储量的估算方法
1.算法效率的估算方法
算法的效率就是算法执行时间的多少
算法的时间复杂度与问题的规模规模n有关,因此常将它简记为T(n),它一定与问题规模n的某个函数f(n)同步增长。记为:
T(n)=O(f(n))
例如,以下3个算法中含基本操作“x增1”的语句频度分别为1、n、n^2,因此,3个算法的时间复杂度分别为O(1)、O(n)、O(n^2),分别称为常量阶、线性阶和二次方阶。
1)++x;
2)for(i=0;i<n;i++){++x;sum+=x;}
3)for(i=0;i<n;i++)
for(j=0;j<n;j++){++x;sum+=x;}
2.算法的存储空间估算
与算法的时间复杂度类似,算法运行所需的存储空间可以用空间复杂度(S(n))进行度量。算法的空间复杂度也是问题规模的函数,即:
S(n)=O(f(n))