数据结构学习——绪论

1.1数据结构基本概念

数据-数据元素-数据项

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

数据类型:原子类型(不可再分)、结构类型(可再分)、抽象数据类型(抽象数据组织及相关操作,见抽象数据类型(ADT)是什么?)。可用抽象数据类型定义一个完整的数据结构。

数据结构:存在特定关系的数据元素的集合。包括逻辑结构、存储结构和数据运算。

        逻辑结构与存储结构关系见逻辑结构与存储结构关系_TBAALi的博客-CSDN博客_逻辑结构和存储结构的关系

存储结构

        1)顺序存储。逻辑相邻,物理相邻。优点:可以实现随机存取,每个元素占用最少存储空间;缺点:只能使用相邻整块存储单元,可能产生较多的外部碎片。

        2)链式存储。借助指示元素存储地址的指针来表示元素之间的逻辑关系。优点:不会出现碎片现象,充分利用所有存储单元;缺点:每个元素因存储指针而占用额外的存储空间,且只能实现顺序存取。注意:链式存储设计时,各个不同结点的存储空间可以不连续,但结点内的存储单元地址必须连续。

        3)索引存储。建立附加索引表。每项称为索引项(关键字,地址)优点:检索速度快;缺点:索引表额外占据存储空间,增删数据时也要修改索引表。

        4)散列存储。哈希存储。优点:检索、增删结点快;缺点:依赖散列函数好坏,可能出现哈希冲突。

哈希表:哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。(见哈希表(散列表)原理详解 - 云+社区 - 腾讯云

1.2算法和算法评价

算法效率:通过时间复杂度和空间复杂度描述。

时间复杂度:算法的时间复杂度,用来度量算法的运行时间,记作: T(n) = O(f(n))。它表示随着 输入大小n 的增大,算法执行需要的时间的增长速度可以用 f(n) 来描述((数据结构)十分钟搞定时间复杂度(算法的时间复杂度) - 简书)。时间复杂度就是用来方便开发者估算出程序的运行时间(究竟什么是时间复杂度,怎么求时间复杂度,看这一篇就够了 - 知乎)。

时间复杂度遵循加法规则和乘法规则。常用渐进时间复杂度。个人理解:时间复杂度相当于求频度函数T(n)=O(f(n))最高次项的数量级。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值