《数据结构》课程绪论

《数据结构》课程绪论

使用教材:

《数据结构教程》第5版 李春葆 清华大学出版社

参考书:

《数据结构与算法分析 C语言描述》(第2版) Mark Allen Weiss 机械工业出版社
《算法导论》(第3版) Charles E. Leiserson 等 机械工业出版社
《算法》(第4版) Robert Sedgewick Kevin Wayne 人民邮电出版社
《STL源码剖析》 侯捷 华中科技大学出版社

使用语言:C/C++

1.数据结构基本概念

数据与数据结构

  • 数据(data):描述客观事物的数和字符的集合。
  • 数据元素(data element):数据的基本单位
  • 数据项(data item):具有独立含义的数据最小单位,又叫字段或域。
  • 数据结构(data structure):所有数据元素及其构成的关系

数据结构包括的三个方面

  • 逻辑结构(logical structure)(数据的逻辑关系)
  • 存储结构(storage structure)(物理结构,如何在存储器上表示)
  • 运算(operation)(对数据实施的操作,增删改查排序等)

逻辑结构的表示方法

  • 图表
  • 二元组 B=(D,R) ,其中 D 为数据集合, R 为数据的所有关系的集合
  • 每一个关系是序偶的集合,对于序偶 <x,y> <script type="math/tex" id="MathJax-Element-8"> </script>( x,yD ), x y 的前驱(predecessor), y x 的后继(successor)。使用尖括号表示 x y 是一个偏序关系,圆括号表示为等价关系。

逻辑结构的类型

  • 集合
  • 线性结构
  • 树形结构
  • 图型结构

存储结构

处理存储结构,既要保证存储所有的元素 xD ,也要存储数据之间的逻辑关系 rR
1. 顺序存储结构:所有元素在存储器中都是连续存放的,逻辑相邻的元素也必然物理相邻。支持快速的查找,插入和删除较慢;
2. 链式存储结构:每个逻辑元素使用内存中的结点存储。所有结点的地址不一定是连续的。C/C++使用指针来链接每一个结点。Java等语言使用引用。支持快速的插入和删除,但是不能随机存取,需要额外浪费指针空间。
3. 索引存储结构:利用关键字,地址的方式建立索引,可以利用关键字的有序性快速查找到关键字地址。查找效率高,但是索引表需要额外空间开销。
4. 哈希(散列)存储结构:直接建立值->存储地址的映射,支持快速查找和插入,不存储数据之间的逻辑关系。

2.算法及其分析

算法的特点

  • 有穷性
  • 确定性
  • 可行性
  • 有输入输出

算法设计的目标

  • 正确性
  • 可使用性
  • 可读性
  • 健壮性
  • 高效率、低存储

算法的时间分析

T(n) 表示元操作出现的频度(注意是实际执行的次数,例如求一个数 n 的所有因子,只需要判断 t[1,n] 是不是其因子即可,如果是则 t n/t 都是其因子,因此其内层的判断语句实际执行的次数是 n 次,因此时间复杂度为 O(n)
通常用“大O记号”表示其渐进复杂度。渐进复杂度取其最高阶,忽略系数和低阶项。

最好、最坏、平均时间复杂度

设输入规模 n ,所有输入实例的集合为 D I 表示输入。
平均时间复杂度的定义

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值