文章同步更新在个人公众号“梓莘”,欢迎关注交流。
什么是数据结构
程序=数据结构+算法
程序设计:为计算机处理问题编制一组指令集。
- 例1、图书馆检索系统自动化->线性数据结构
- 例2、计算机和人对弈->树形数据结构
- 例3、多叉路口交通灯管理->图形数据结构
综上,数据结构是一门研究非数值计算的程序设计问题中计算机操作对象以及他们之间的关系和操作等的学科。
基本概念和术语
- 数据:客观事物的符号表示。
- 数据元素:数据的基本单位,常作为一个整体进行考虑和处理。一个数据元素可以由若干个数据项组成,数据项是数据的不可分割的最小单元。
- 数据对象:性质相同的数据元素的集合,是数据的一个子集。
- 数据结构:相互之间存在一种或多种特定关系的数据元素的集合。
根据数据元素之间的不同特性,可分为:
- 集合:通属于一个集合之外,无其他关系
- 线性结构:元素存在一个对一个的关系
- 树形结构:元素存在一个对多个的关系
- 图状结构或网状结构:元素存在多个对多个的关系
数据结构的定义形式定义为:数据结构的一个二元组Data.Structure=(D,S) D是数据元素的有限集,S是D上关系的有限集
算法和算法分析
算法:对特定问题求解步骤的一种描述,他是指令的有限序列,其中每一条指令表示一个或多个操作。
算法特性:
- 有穷性:有限步骤内正确结束,不能形成无穷循环
- 确定性:短发中每一步都有确定的含义,无二义性
- 可行性:原则上能精确进行
- 输入:0个或多个输入
- 输出:至少有1个或多个输出
算法设计要求:
- 正确性
- 可读性
- 健壮性
- 效率与低存储量需求
算法效率的度量:
算法时间复杂度:算法中基本操作重复执行的次数是问题规模n的某个函数f(n),它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同。
- 常量阶:
x=x+1
- 线性阶:
for(i=1;i<=n;i++) x=x+1
- 平方阶:
for(i=1;i<n;i++) for(j=1;j<=n;j++) x=x+1
算法的存储空间需求:
算法空间复杂度:对数据进行操作的工作单元和存储一些为实现计算所需信息的辅助空间。输入数据所占空间只取决于问题本身和算法无关。