数据结构绪论

数据结构的基本概念

1.1基本概念

  • 数据时信息的载体,是计算机程序加工的原料
  • 数据元素是数据的基本单位

数据元素由数据项组成,数据项是构成数据元素的不可分割的最小单位

eg:学生记录是一个数据元素,学号姓名性别就是数据项

  • 数据对象时具有相同性质的数据元素的集合
  • 数据类型

原子类型:其值不可再分的类型。eg:int,bool

结构类型:其值可以分为若干成分的数据类型。eg:struct

抽象数据类型:对数据的某种抽象。抽象数据类型可以定义一个完整的数据结构。因为抽象数据类型定义了数据的取值范围及其结构形式,以及对数据操作的集合

  • 数据结构:相互之间存在一种或多种关系的数据元素的集合。包括逻辑结构,存储结构和数据的计算

逻辑结构和存储结构是密不可分的两个方面。但是!!逻辑结构独立于存储结构,而存储结构是逻辑结构在计算机的映射,不能独立于逻辑结构而存在。

解释:一个数据的首先拥有逻辑结构,同一逻辑结构可以有多种存储结构的表示

1.2数据结构的三要素

1.2.1逻辑结构

逻辑结构独立于计算机存在。

分类:

  • 线性结构:结构中的元素只存在一对一的关系
  • 一般线性表

插入和删除位置受限制的线性表:

  • 队列

线性表的推广:数组

除了第一个元素外,每一个元素都有且只有一个直接前驱,除了最后一个元素之外,每一个元素都有且只有一个直接后继。

  • 非线性结构

集合:结构中的元素除了属于同一个集合以外,没有其他任何的关系

树形结构:结构中的元素存在一对多的关系

图状结构:结构中的元素存在多对多的关系

1.2.2存储结构

存储数据时要存储个数据元素的

  • 顺序存储。逻辑上相邻的元素在物理上也相邻
  • 链式存储。逻辑上相邻的元素在物理上不一定相邻
  • 索引存储。
  • 散列存储。

1.2.3数据的运算

施加在数据上的运算包括运算的定义(针对逻辑结构)和实现(针对存储结构)

1.3算法的基本概念

算法是对特定问题求解步骤的一种描述。

主要考察内容是时间复杂度和空间复杂度的计算

算法的特性(了解)

  • 有穷性 一个算法必须在有穷步后结束,且每一步都在有穷时间完成
  • 确定性 每条指令必须有确切定义,相同输入相同输出
  • 可行性 可以通过已经实现的基本运算的有限次来实现
  • 输入 可以有零个或多个输入
  • 输出 有一个或多个输出

好的算法应考虑的目标(了解)

  • 正确性
  • 可读性
  • 健壮性
  • 高效率与低存储量

算法效率的度量

时间复杂度和空间复杂度是后续每一个算法所必须掌握的知识点,十分重要!!!!!!

1.1.1时间复杂度

记忆:O(1)<O(logn)<O(n)<O(nlogn)<O(n的平方)<O(n的三次方)<O(2的n次方)<O(n!)<O(n的n次方)

加法规则:时间复杂度相加,只保留时间复杂度高的那一个

乘法规则:时间复杂度都保留

时间复杂度的具体实现方法利用王道课后题计算寻找规律,在文末讲解。

1.1.2空间复杂度

除了输入和程序之外的额外空间还需要什么规模的空间来辅助。

王道课后题

时间复杂度的计算包括单层循环,双层循环和多层循环,主要解释单层循环和双层循环的解题步骤:

单层循环
  • 首先写出循环躺数
  • 写出每次循环时未知数的值
  • 找到未知数和循环躺数之间的代数关系
  • 找到结束循环时的关系式
  • 联立两个方程,得到t和n的关系式即时间复杂度

双层循环

双层循环有两种方式来找寻时间复杂度

方法一:

  • 找到外层循环的循环躺数
  • 找到内层循环的执行次数
  • 求和即可

方法二:

  • 用表达式来求值

  • 11
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值