面经——数据结构

数据结构

一、绪论

基本概念
  1. 数据对象 > 数据元素 > 数据项

    • 数据对象是具有相同性质的数据元素的集合
    • 数据元素是数据的基本单位,由若干数据项组成
    • 据项是构成数据元素不可分割最小单位
  2. 数据类型:是一个值的集合和定义在该集合上的一组操作

    • 原子类型:值不可再分
    • 结构类型:值可以再分
  3. 数据结构

    • 定义:数据元素 + 相互关系
    • 数据的运算实质就是算法的执行,由逻辑结构定义,由存储结构实现。不能过于考虑逻辑结构,而忽略存储结构是否容易实现,逻辑结构和存储结构都影响着算法的好坏。
数据结构三要素
  1. 逻辑结构
    • 集合:数据元素同属于一个集合,其他无任何关系
    • 线性结构:数据元素之间只存在一对一的关系,如栈、队列、串、数组、其他线性表
    • 树状结构:数据元素间存在一对多的关系
    • 图状结构:数据元素间存在多对多的关系
  2. 存储结构
    • 顺序存储:逻辑相邻的数据元素存储再物理上相邻的位置。
      • 优点:可以实现随机存取,占用空间小
      • 缺点:可能产生空间碎片
    • 链式存储:不同节点只要求逻辑上相邻,但是节点内要求物理连续
      • 优点:无碎片现象,元素的增删容易
      • 缺点:指针占用额外的空间,只能顺序存取
    • 索引存储:存储元素的同时建立索引表
      • 优点:查找速度快
      • 缺点:索引表占用额外的空间,增删数据需要花费时间修改索引表
    • 散列存储(哈希存储):将数据元素的值映射成存储地址
      • 优点:增删改查都很快
      • 缺点:出现哈希冲突会增大时空开销
算法
  1. 算法的特性
    • 输入:有零个或多个输入
    • 有穷性:每一步均可在有穷时间内完成
    • 确定性:相同的输入只能获得相同的输出
    • 可行性:算法可以通过计算机基本指令实现
    • 输出:至少一个输出
  2. 好的算法
    • 正确性:正确解决问题
    • 健壮性:及时处理非法数据
    • 可读性:易于人们理解
    • 时空开销小
  3. 算法效率的度量
    • 时间复杂度:最深层嵌套语句运算次数的数量级
    • 空间复杂度:算法耗费的存储空间,原地存储指O(1)
    • O ( 1 ) < O ( l o g 2 n ) < O ( n ) < O ( n l o g 2 n ) < O ( n 2 ) < O ( 2 n ) < O ( n ! ) < O ( n n ) O(1)<O(log_{2}n)<O(n)<O(nlog_{2}n)<O(n^2)<O(2^n)<O(n!)<O(n^n) O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(2n)<O(n!)<O(nn)

二、线性表

  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、付费专栏及课程。

余额充值