【数据结构之绪论复习】

第一章 绪论

1.主要定义:

  • 数据是计算机加工处理的对象;
  • 数据元素是数据的基本单位;
  • 数据项是组成数据元素的、不可分割的最小单位;
  • 数据结构是按某种逻辑关系组织起来的数据元素的集合,使用计算机语言描述并按一定的存储方式存储在计算机中,并在其上定义了一组运算。
  • 数据结构包括三方面内容:逻辑结构存储结构数据的运算
  • 逻辑结构:分为 线性结构、非线性结构。线性结构:eg:线性表、栈、队列、字符串。 非线性结构:树、图、集合
  • 逻辑结构:分为 集合结构、线性结构、树形结构、图形结构。集合结构:元素之间没有关系;线性结构:元素之间存在一对一的关系;树形结构:元素之间存在一对多的关系,期中最多只有一个元素没有前驱元素,这个元素是根。图形结构:元素之间存在多对多的关系。
  • 常见存储结构:顺序存储、链式存储、哈希存储、索引存储
  • 算法:算法是对特定问题的求解步骤的一种描述,是指令的有限序列
  • 算法的五个特性:输出、输出、确定性、可行性、有穷性。 输入:算法有0个或者多个输入;输出:算法至少产生一个输出;确定性:算法每一条指令有确切的含义,没有二义性;可行性:可以通过已经实现的基本运算执行有限次来实现;有穷性:算法必须总能在执行有限步后终止。
  • 抽象数据类型ADT:描述了数据的逻辑结构和抽象运算。
  • 例如
ADT LinearList{
   Data: 数据元素及其之间的关系定义
   Operations:
   Create(); 创建一个空 线性表
   Destory(); 销毁一个线性表
   ...... 等等基础操作;
}
  • 程序和算法的联系与区别:联系:程序是算法指令的有序集合,是算法用某种程序设计语言的表达,是算法在计算机上的具体实现。区别:在语言描述上不同,程序必须是用规定的程序设计语言来写,算法的描述形式包括自然语言,伪代码,流程图,程序语言等;算法所描述的步骤一定是有限的,而程序可以无限的执行。比如一个死循环可以称为程序,但是不能称为算法。
  • 衡量算法的标准:正确性,简明性,健壮性,效率,最优性,可使用性。
  • 时间复杂度和空间复杂度是衡量算法效率的两个重要指标。
  • 度量算法执行时间的两种办法:事后统计法,事前估算法,一般采用事前估算法。

2.做题补充:

  • 采用链式存储时,==存储单元的地址 ==不一定连续
  • 算法的时间复杂度最主要元素取决于:问题规模
  • 程序步:程序步是指在语法上或者语义上有意义的程序段,该程序段的执行时间与问题实例的特征无关。
  • 问题实例的特征:与问题的具体实例有关的量;例如对一组特定个数的元素进行排序, 对该组元素的排序是一个排序问题的实例。元素的个数可视为该实例的特征。程序步数就是程序步的执行次数。
  • 时间复杂度大O()表示的含义:表示算法的一种渐近时间复杂度;
  • 时间复杂度T(n)和程序执行次数f(n)的关系:算法中基本运算执行次数用T(n)表示,问题规模n的某个函数f(n),存在自然数n0,常数c,当n>n0时,T(n)<cf(n); f(n)是T(n)的渐近上界,记为T(n)=O(f(n));
  • 算法原地工作指的是:指算法所需要的辅助空间为常量。
  • O(1)时间复杂度表示什么:最低时空复杂度,耗时间与空间与输入数据大小无关。
  • 逻辑结构和存储结构的关系:算法设计取决于选定的逻辑结构,算法的实现依赖于所采用的存储结构。
  • 循环队列用顺序表实现,栈表示逻辑结构,循环队列,链表,哈希表表示存储结构。
  • 链式存储设计时,节点内的存储单元地址一定连续

3. 思考题:

  • 对于两种不同的数据结构,逻辑结构和物理结构一定不相同吗?

  • 答:对于两种不同的数据结构,它们的逻辑结构和物理结构完全有可能相同。如二叉树与二叉排序树,二叉排序树采用二叉树的逻辑表示和存储方式,二叉树用于表示层次关系,二叉排序树通常用于排序和查找。尽管他们都有建立树、插入结点、删除结点、和查找结点的功能。但是二叉树与二叉排序树的运算定义是不同的,以查找结点为例,二叉树的时间复杂度是O(n),二叉排序树的复杂度为O(log2n)

  • 相同的逻辑结构,同一种运算在不同的存储方式下实现运算效率不同,

  • 答:线性表既有顺序存方式,又有链式存储方式,顺序存储下出现插入删除元素,平均要移动一半元素,时间复杂度为O(n),,链式下插入与删除时间复杂度为O(1)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱喝阔落的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值