2020-10-21 数据结构(一)

菜鸟修炼

第一章 概论

数据:
是信息的载体,
是描述客观事物的数字、字符以及所有能够输入到计算机中并被计算机处理的符号的 集合
计算机能处理的数据主要分为两大类:
数值型数据
非数值型数据(字符型数据,以及图形、图像、声音等多媒体数据)
数据元素(亦称为结点):
是数据的基本单位,是数据在这个集合中的一个个个体
数据项:
是具有相同性质的数据元素的集合,是数据这个集合的一个子集。
数据项分为两种
初等项:具有独立含义的最小标识单位
组合项:具有独立含义的标识单位,一般是由一个或多个初等项和组合项组成
数据对象:
注:数据对象中的数据元素不是孤立的,而是彼此相关的,他们之间存在的相互关系为结构
数据结构:
按某种逻辑关系(逻辑结构)组织起来一批数据,以一定的存储方式(存储结构或物理结构)把它存储于计算机的存储器之中,并在这些数据上定义了一个运算的集合(运算集合),换句话说,数据结构就是描述数据元素之间的相互关系,一般并不注重于数据元素的具体内容
数据结构=逻辑结构+存储结构+运算(三要素)
逻辑结构:(从逻辑关系上描述数据,与数据存储无关,独立于计算机)
Data_Structure=(D,R)
D:是数据元素的有限集合;R:是D上关系的有穷集合,每个关系都是D到D上的关系
分为两大类:线性结构非线性结构;往细的分:集合,线性结构,树形结构以及图形结构(网状结构)
存储结构:(是逻辑结构在计算机存储器中的实现,是依赖于计算机的)
四种存储方式:
顺序存储方式
一片连续的存储单元存储数据
邻接关系为逻辑关系
主要用于线性结构
存储密度大
有些操作复杂(例如插入、删除等)
链式存储方式
不要求连续的存储单元存储数据
指针表示逻辑关系
存储密度小
动态操作简单(例如插入、删除等)
可用于线性结构或非线性结构
索引存储方式
是在存储节点数据时还要同时建立附加的索引表
索引表中的每一项成为索引项,一般有关键字和地址组成(关键字是能够唯一标示一个节点的一个或多个字段)
稠密索引:每个节点在索引表中都有一个索引项;索引项的地址表示该结点的存储位置
稀疏索引:一组节点在索引表中只对应一个索引项;索引项的地址实质是一组节点的起始存储位置
散列存储方式
是根据节点的关键字通过反映节点与存储地址之间对应关系的函数直接计算出该节点的存储地址(或位置)
运算
是定义在数据的逻辑结构上的,每种逻辑结构都有一个运算的集合,换句话说,是定义在抽象的数据上所施加的一系列的操作
常见的操作有:
查找(检索)
插入
删除
修改(更新)
排序
合并
分拆
判断数据结构相同:数据三要素必须相同
数据类型
是一组性质相同的值得集合以及在这些值上定义一组操作(运算)的总称。
按值可分为:简单类型和结构类型
简单类型:每个数据都是无法再分割的整体,例如C语言的整型,实型等
结构类型:每个数据还可分为若干成分,例如C语言的数组,结构等
抽象数据类型:
是对事物的简化描述,就是抽取反映问题的本质的东西,而忽略非本质的一些细节
是指抽象数据的组织和与之相关的操作
可分为不同层次,低层次和高层次,低层次抽象可以作为高层次抽象的一种实现
一般结构为:
ADT 抽象数据类型名{
Data
数据元素集合及数据元素之间的逻辑关系的描述
Operations
构造函数
Initial value:用来初始化对象的数据
Process:初始化对象
操作1
Input:用户输入的数据
Pronditions:系统执行本操作前数据所需的状态
Process:对数据进行的处理
Output:操作后返回的数据
Postconditions:系统操作后的数据状态
操作2
。。。。
}//ADT抽象数据类型名

例如:
ADT Circle{
Data
非负实数,表示圆的半径
Operation
构造函数
Initial value:圆的半径
Process:给原的半径赋初值
Cricumference:
Input: 无
Proconditions:无
Process:计算圆的周长
Output:返回圆的周长
Postconditions:无
Area
Input:无
Preconditions:无
Process:计算圆的面积
Output:返回圆的面积
Prostconditions:无
}//ADT Circle
抽象类型可以看做是描述问题的模型,它独立于具体实现,优点是讲数据和操作封装在一起,使得用户程序智能通过ADT里定义的某些操作来访问其中数据,从而实现信息的隐蔽和隐藏
ADT相当于在概念层(抽象层)上描述问题,而类相当于在实现层上描述问题
算法
是规则的有穷集合,这些规则规定了解决某一特定类型问题的一个运算(操作)序列
五个特性:
0个或多个输入
一个或多个输出
有穷性:有穷步结束
确定性:确切的,无歧义的定义
可行性:基本的,可行的
算法的常用描述方式:
自然语言
数学语言
流程图
伪语言
程序设计语言
算法分析
判断算法的优劣:
正确性
可读性
健壮性:在异常的条件下,算法能正常运行的能力;一是容错能力,二是恢复能力
可用性
效率
算法的复杂度
一般两种方法:事后测试和事前估计
时间复杂度+空间复杂度
常见的时间复杂度(递增):
O(1),O(log2n),O(n),O(nlog2n),O(n2),O(n3),…,O(2^n)等

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值