数据结构之基本概念

  版权声明:本文参考了严蔚敏的《数据结构》。未经作者允许,严禁用于商业出版,否则追究法律责任。网络转载请注明出处,这是对原创者的起码的尊重!!!


1 基本概念

  • 数据:数据是信息的载体,是描述客观事物属性的数、字符、以及能被输出计算机并被计算机程序处理和识别的符号的集合

  • 数据元素:数据的基本单位,数据项是数据的最小单位。

  • 数据对象:具有相同性质的数据元素的集合。

  • 数据类型:一个值的集合和定义在集合上的一组操作的总称。

    • 原子类型:其值不可以再分的数据类型。
    • 结构类型:其值可以再分为若干成分的数据类型。
    • 抽象数据类型:一个数学模型和定义再该模型上的一组操作。
  • 数据结构:数据元素相互之间的关系。

    • 逻辑结构:
      • 集合:除同属一个集合外,别无其它关系
      • 线性结构:一对一(最多有一个前驱,最多有一个后继)
      • 树:一对多(最多有一个前驱,可有多个后继)
      • 图 :多对多(可有多个前驱,可有多个后继)
    • 存储结构(物理结构):数据元素的表示和关系的表示
      • 顺序存储:把逻辑相邻的元素存放在物理也相邻的存储单元里,元素之间的关系由存储单元的邻接关系来表示
        • 优点:随机存取,每个元素占用最少的存储空间
        • 缺点:只能使用相邻的一整块存储空间,会产生外部碎片
      • 链接存储:不要求逻辑上相邻的元素在物理上也相邻,借助只是元素存储地址的指针来表示元素之间的关系。
        • 优点: 不会产生外部碎片
        • 缺点:指针占用额外空间,只能顺序存取
      • 索引存储:在存储元素信息的同时,还建立附加的索引表。
        • 优点:检索速度快
        • 缺点:索引表占用额外空间,增删元素时要同时修改索引表
      • 散列存储:根据元素的关键字直接计算出元素的存放地址。
        • 优点: 检索、增删元素都很快
        • 缺点:散列函数容易出现冲突
    • 数据的运算
      • 运算的定义:针对逻辑结构
      • 运算的实现:针对存储结构

2 算法和算法评价

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

  • 算法的特点

    • 有穷性:在有穷步骤和有穷时间内完成
    • 确定性:相同输入只能得到相同输出
    • 可行性:算法描述的操作可以通过已经实现的基本运算执行有限次数来实现
    • 零个或多个输入
    • 一个或多个输出
  • 算法的目标

    • 正确性
    • 可读性
    • 健壮性
    • 时间和空间开销都尽可能小
  • 算法评价

    • 时间复杂度:最坏时间复杂度、平均时间复杂度、最好时间复杂度。不仅依赖于问题规模n,也依赖于输入数据的性质。
      • O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)<O(nk)<O(2n)<O(n!)<O(nn)
    • 空间复杂度:
      • 原地工作:算法所需辅助空间是常量

  版权声明:本文参考了严蔚敏的《数据结构》。未经作者允许,严禁用于商业出版,否则追究法律责任。网络转载请注明出处,这是对原创者的起码的尊重!!!


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

蓝月心语

你的鼓励是我最大的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值