【数据结构与算法】第一章基本绪论概念总结附思维导图

声明:本文为个人在MOOC上学习数据结构与算法时的笔记总结

数据结构是计算机科学中的一个核心概念,它涉及到如何在计算机中组织和存储数据,以便于高效地进行数据的访问和修改。数据结构的选择对于程序的效率、性能和可维护性有着重要的影响。

1. 数据结构的基本概念

  • 数据 (Data): 信息载体,能被计算机识别、存储和加工的符号集合。
  • 数据元素 (Data Element): 数据的基本单位,在程序中通常作为一个整体处理。
  • 数据项 (Data Item): 数据元素的最小单位,描述数据元素的属性。
  • 数据对象 (Data Object): 性质相同的数据元素的集合,是数据的子集。
  • 数据类型 (Data Type): 一组性质相同的值的集合和定义在这组值上的一组操作的总称。

2. 数据结构

  • 数据结构: 相互之间存在一定关系的数据元素的集合。
  • 数据结构包含三方面内容:
    • 数据的逻辑结构: 数据元素之间的关系,例如线性结构、集合结构、树形结构和图结构等。
    • 数据的存储结构: 数据元素在计算机存储空间中的存放形式,例如顺序存储结构和链式存储结构等。
    • 数据的运算: 对数据元素进行的操作,例如插入、删除、查找等。

每种数据结构都有其特定的用途和操作,选择合适的数据结构对于解决特定问题非常关键。例如,如果需要频繁地插入和删除数据,可能更适合使用链表或队列;如果需要快速访问数据,数组或散列表可能是更好的选择。

3. 数据的逻辑结构

  • 线性结构: 数据元素之间存在着一对一的关系,例如线性表、栈和队列等。
  • 集合结构: 数据元素之间同属于一个集合,除此之外没有其他关系。
  • 非线性结构: 数据元素之间存在着一对多或多对多的关系,例如树形结构和图结构等。

4. 数据的存储结构

  • 顺序存储结构: 用一组连续的存储单元依次存放数据元素,其逻辑关系通过元素的存储位置来反映。
  • 链式存储结构: 用一组任意的存储单元存放数据元素,其逻辑关系通过附加指针来表示。
  • 索引存储结构: 在存储数据元素的同时,建立一个附加的索引表,利用索引表中索引项的值来确定结点的存储单元地址。
  • 散列存储结构: 根据数据元素的关键字,通过散列函数直接计算出该数据元素的存储地址。

5. 抽象数据类型 (ADT):

  • 抽象数据类型 (ADT): 一个数据模型以及定义在该模型上的一组操作。
  • ADT 的特点: 抽象、封装和类型定义。

6. 算法

  • 算法 (Algorithm): 对特定问题解题方案的准确而完整的描述,是一系列解决问题的清晰指令的有限序列。
  • 算法设计的要求: 正确性、可读性、健壮性、高效率和低存储量。
  • 算法的描述方法: 自然语言、流程图、伪代码等。
  • 算法与程序: 算法是解决问题的步骤,程序是算法的具体实现。

7. 算法分析

在数据结构和算法中,时间复杂度和空间复杂度是评估算法效率的两个重要指标。

  • 时间复杂度:它描述了算法运行时间与输入数据量之间的关系。时间复杂度通常用来估算算法的运行速度。它不考虑程序在计算机上的实际运行时间,而是用输入数据的大小(通常用n表示)来表示算法执行的操作次数。时间复杂度通常用大O符号表示,例如O(n)、O(n^2)、O(log n)等。

    • 常数时间复杂度 O(1):算法的运行时间不随输入数据量的增加而增加,例如访问数组的单个元素。
    • 线性时间复杂度 O(n):算法的运行时间与输入数据量成正比,例如遍历数组。
    • 对数时间复杂度 O(log n):算法的运行时间随着输入数据量的增加而增加,但增长速度逐渐减慢,例如二分查找。
    • 多项式时间复杂度 O(n^k):算法的运行时间随着输入数据量的增加呈多项式增长,k是常数,例如冒泡排序。
    • 指数时间复杂度 O(2^n):算法的运行时间随着输入数据量的增加呈指数增长,例如暴力破解密码。
  • 空间复杂度:它描述了算法在执行过程中临时占用存储空间的大小。空间复杂度关注的是随着输入数据量的增加,算法所需内存空间的增长情况。与时间复杂度类似,空间复杂度也用大O符号表示。

    • 常数空间复杂度 O(1):算法在执行过程中临时占用的存储空间大小不随输入数据量的增加而增加。
    • 线性空间复杂度 O(n):算法在执行过程中临时占用的存储空间大小与输入数据量成正比,例如创建一个与输入数组大小相同的辅助数组。
    • 对数空间复杂度 O(log n):算法在执行过程中临时占用的存储空间大小随着输入数据量的增加而增加,但增长速度逐渐减慢。
    • 多项式空间复杂度 O(n^k):算法在执行过程中临时占用的存储空间大小随着输入数据量的增加呈多项式增长。

在实际应用中,我们通常希望选择时间复杂度和空间复杂度都较低的算法,以实现高效和节省资源的目的。然而,有时候需要在时间复杂度和空间复杂度之间做出权衡,例如,某些情况下我们可能更关注速度,愿意使用更多内存来换取时间效率。

时间复杂度规模图解:

复杂度分析小窍门:

思维导图一览:

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

七洛殇Atrosenet.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值