数据结构绪论

152 阅读2分钟

程序 = 数据结构 + 算法

概念

  • 数据(数值型,非数值型)

  • 数据元素(或称为元素、结点、顶点)

  • 数据项(组成数据元素的最小单位,不可分割)

  • 数据对象(性质相同数据元素的集合)

  • 数据结构 Data Structure

    结构——数据元素相互之间的关系
    Data Structure 就是相互之间存在一种或多种特定关系的数据元素集合
    数据结构三个方面:
    1.逻辑结构:线性、非线性 || 集合、线性、树形、图状或网状
    2.物理/存储结构:顺序、链式、索引、散列
    3.数据的运算和实现
    ​
    问:逻辑结构和存储结构的关系
    存储结构是逻辑关系的映像,逻辑结构是数据结构的抽象,存储结构是数据结构的实现
    

数据类型

值的集合+值集合上的一组操作

抽象数据类型 Abstract Data Type,ADT

可用(D,S,P)三元组表示
  1. D 是数据对象
  2. S 是 D 上的关系集
  3. P 是对 D 的基本操作集
定义格式
ADT 抽象数据类型名{
    数据对象:<数据对象的定义>
    数据关系:<数据关系的定义>
    基本操作:<基本操作的定义>
}ADT 抽象数据类型名
​
数据对象与数据关系用伪代码藐视
基本操作要分为:
    1、基本操作名(参数表)
    2、初始条件(初始条件描述)
    3、操作结果(操作结果描述)
抽象数据类型举例:Circle的定义
 ADT Circle {
     数据对象: D={r,x,y|r,x,y均为实数}
     数据关系: R={<r,x,y>|r是半径,<x,y>是圆心坐标}
     基本操作:
         Circle(&C,r,x,y)
            操作结果:构造一个圆;
         double Area(C)
            初始条件:圆已存在;
            操作结果:计算面积;
         double Circumference(C)
            初始条件:圆已存在;
            操作结果:计算周长;
         ……
 }ADT Circle

算法

定义: 对特定问题求解方法和步骤的描述,是指令的有限序列。

算法特性: 有穷性、确定性、可行性、输入(零个或多个)、输出(一个或多个)

算法设计要求: 正确性、可读性、健壮性、高效性

算法分析

考虑“算法效率”:
    1.时间效率:事后统计、事前分析(✔)
        仅仅比较不同算法的数量级
        称 O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度,通常考虑 最坏/平均时间复杂度
            <求时间复杂度,首先要找到基本语句>
        
    2.空间效率
        渐进空间复杂度
        辅助空间
        原地工作:空间效率为常数阶,不需要辅助空间
​
<注:时间效率与空间效率往往是矛盾的>
时间复杂度例题:

总结