数据结构与算法 第一章绪论

教材:《数据结构与算法》第四版 罗文劼

 知识重点:基于b站青岛大学王卓老师的网课

1、数据结构的基本概念

  • 数据:信息的载体
  • 数据项:是数据不可分割的最小单位
  • 数据元素:是数据的基本单位
    • 一个数据元素由若干个数据项组成
  • 数据对象(数据元素类):具有相同性质的数据元素的集合
  • 数据结构:相互之间存在着一种或多种关系的数据元素的集合
  • 抽象数据类型 = 数据的逻辑结构 + 抽象运算(运算的功能描述)

2、数据结构的分类

  • 数据的逻辑结构
    • 集合:属于同一个集合
    • 线性结构:存在一对一的关系
    • 树形结构:存在一对多的关系
    • 图形结构(网状结构):存在多对多的关系
  • 数据的存储结构
    • 顺序存储方法:把逻辑上相邻的元素存储在物理位置相邻的存储单元中,结点间的逻辑关系由存储单元的邻接关系来体现
    • 链式存储方法:对逻辑上相邻的元素不要求其物理位置相邻,元素间的逻辑关系通过附设的指针字段来表示
    • 索引存储方法
    • 散列存储方法
  • 数据的运算
    • 引用型运算:不改变数据结构中原有的数据元素的状态
    • 加工型运算:改变数据结构中原有的数据元素的状态

3、算法

  • 算法的特性
    • 有穷性:必须在有限时间内完成
    • 确定性:算法的每一步必须有确切的定义,无二义性
    • 可行性:每一步都可以通过已经实现的基本运算的有限次执行得以实现
    • 输入:具有零个或多个输入
    • 输出:具有一个或多个输出
  • 算法的要求
    • 正确
    • 可读
    • 健壮:当输入不合法数据后,算法能做适当处理
    • 高效
  • 算法的描述
    • 自然语言
    • 程序流程图
    • N-S图
  • 算法的性能分析(时间效率和空间效率有时候是矛盾的)
    • 时间复杂度
    • 空间复杂度

4、时间复杂度

  • 算法时间效率的度量方法

    • 事后统计
    • 事前分析
  • 取决因素
    • 硬件的速度
    • 书写程序的语言
    • 编译程序所生成目标代码的质量
    • 问题的规模
  • 定义

    • 最坏时间复杂度:在最坏情况下(执行完所有),算法的时间复杂度
      • 一般总考虑最坏情况下的时间复杂度 
    • 平均时间复杂度:在所有可能输入实例在等概率出现的情况下,算法的期望运行时间
    • 最好时间复杂度:在最好情况下(执行一次 ),算法的时间复杂度
  • 计算规则
    • 加法规则
    •   乘法规则
  • 算法时间效率的比较
    •  

     

  • 定理1
    •  忽略所有低次幂和最高次系数,体现出增长率的含义
    • 时间复杂度是嵌套最深层语句的频都所决定的 

例题1

 例题2

5、空间复杂度

  • 定义:算法所需存储空间的度量 
  • 占据的空间
    • 算法本身要占据的空间,输入/输出、指令、常数、变量
    • 算法要使用的辅助空间

例题1

总结:

1、数据结构的基本概念要了解清楚

2、时间、空间复杂度要弄懂,当自己编程时,时间空间复杂度要尽可能的小,程序的运行时间才会更快 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Memorises1999

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

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

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

打赏作者

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

抵扣说明:

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

余额充值