数据结构——1.数据结构和算法

第一部分:笔试核心概念(理论知识)

一、 数据结构绪论

  1. 什么是数据结构?

    • 数据结构不仅仅是数据,而是研究如何组织数据(结构化信息)的方法,目的是为了能够高效地处理这些数据。
    • 一个经典的公式是:算法 + 数据结构 = 程序。这表明,好的程序离不开高效的数据组织方式和处理算法。
  2. 基本概念与术语

    • 数据 (Data):是计算机可以识别、存储和处理的符号总称,是程序处理的“原料”。例如,一张图片、一段文字、股票行情、心电图数据等。
    • 数据元素 (Data Element):是数据的基本单位,在程序中通常作为一个整体进行考虑和处理。也称为结点、元素。
    • 数据项 (Data Item):一个数据元素可以由若干个数据项组成。这是构成数据元素的最小单位,也称为字段或域。
      • 示例:在一个学生信息表中,整行(如“2071601, xxx, 计算机学院, …”)是一个数据元素,而“学号”、“姓名”等则是数据项

二、 数据结构的三个组成部分

数据结构由三个紧密相关的部分组成:逻辑结构存储结构运算

  1. 逻辑结构 (Logical Structure)

    • 定义:指数据元素之间的逻辑关系,与数据在计算机中的存储位置无关。
    • 它可以形式化地定义为一个二元组:L=(N,R)L=(N, R)L=(N,R),其中 NNN 是数据元素的有限集合,RRR 是定义在 NNN 上的逻辑关系的集合。
    • 四种基本的逻辑结构
      • 集合结构:元素之间除了“同属一个集合”外,没有其他任何关系。
      • 线性结构:元素之间存在“一对一”的线性关系。例如,学生排队。
      • 树形结构:元素之间存在“一对多”的层次关系。例如,公司的组织架构、文件系统目录。
      • 图形结构:元素之间存在“多对多”的网状关系。例如,社交网络中好友关系、地图中的城市交通网络。
  2. 存储结构 (Physical Structure)

    • 定义:指数据的逻辑结构在计算机中的实现方式,也称为物理结构。它研究如何将数据元素及其关系存储到计算机的内存中。
    • 四种基本的存储结构
      • 顺序存储:将逻辑上相邻的元素存储在物理地址也相邻的存储单元中。
        • 优点:可以随机访问(通过下标直接访问),存储密度高。
        • 缺点:插入和删除元素需要移动大量元素,存储空间需要预先分配,可能造成空间浪费或溢出。
        • 典型代表:数组 (Array)。
      • 链式存储:用一组任意的存储单元存储数据元素,通过附加的指针字段来表示元素间的逻辑关系。
        • 优点:插入和删除操作方便,无需移动元素,按需分配空间。
        • 缺点:只能顺序访问,需要额外的指针空间,存储密度较低。
        • 典型代表:链表 (Linked List)。
      • 索引存储:在存储数据元素信息的同时,还建立一个附加的索引表。索引表中的每一项称为索引项,一般形式是:(关键字,地址)。
        • 优点:检索速度快。
        • 缺点:需要额外的索引表空间,增加和删除数据时需要修改索引表。
      • 散列存储 (哈希存储):根据元素的关键字直接计算出该元素的存储地址。这是一种索引存储的扩展。
        • 优点:查找、插入和删除操作通常非常快(接近常数时间)。
        • 缺点:如果哈希函数设计不好,容易产生冲突,导致性能下降。
  3. 数据的运算 (Operations on Data)

    • 运算是定义在逻辑结构上,并在相应的存储结构上实现的。
    • 常见的运算
      • 创建 (Create)
      • 销毁 (Destroy)
      • 查找 (Search / Find)
      • 插入 (Insert)
      • 删除 (Delete)
      • 修改 (Update)
      • 排序 (Sort)
      • 遍历 (Traverse)

三、 算法

  1. 算法的定义

    • 算法是为解决某一特定问题而规定的一系列有穷的明确的操作步骤。
    • 算法的五个重要特性
      • 有穷性 (Finiteness):算法必须在执行有限步骤后终止。
      • 确定性 (Definiteness):算法的每一步指令都必须有确切的含义,无歧义。
      • 可行性 (Feasibility):算法中的每一步操作都必须是可以通过已经实现的基本运算执行有限次来实现的。
      • 输入 (Input):一个算法有零个或多个输入。
      • 输出 (Output):一个算法有一个或多个输出。
  2. 算法的评价标准

    • 正确性 (Correctness):算法能够对合法的输入产生正确的输出。这是最基本的要求。
    • 时间效率 (Time Efficiency):算法执行所需的时间。通常用时间复杂度来度量。
    • 空间效率 (Space Efficiency):算法执行过程中占用的存储空间。通常用空间复杂度来度量。
    • 可读性 (Readability):算法易于阅读、理解和交流。
    • 鲁棒性 (Robustness):当输入非法数据时,算法能适当地做出反应或进行处理,而不会产生异常或得到莫名其妙的结果。
  3. 算法的正确性证明(笔试可能考)

    • 证明一个算法正确,通常需要证明两点:
      1. 算法会在有限步内终止
      2. 算法终止时,能得到问题的正确解
    • 常用的证明方法是数学归纳法
      • 第一数学归纳法
        1. 基础情形:证明当 nnn 取某个初值 ccc 时,命题成立。
        2. 归纳步骤:假设当 n=k−1n=k-1n=k1 时命题成立,然后证明当 n=kn=kn=k 时命题也成立。
      • 第二数学归纳法(强归纳法)
        1. 基础情形:证明当 nnn 取某个初值 ccc 时,命题成立。
        2. 归纳步骤:假设对于所有小于 kkk 的正整数 nnn,命题都成立,然后证明当 n=kn=k

你可能感兴趣的:(数据结构,数据结构)