解决问题方法的效率,跟数据的组织方式有关。
    解决问题方法的效率,跟空间的利用效率有关。(递归程序对空间占用很恐怖。)
    解决问题方法的效率,跟算法的巧妙程度有管。

    数据结构:

    • 数据对象在计算机中的组织方式
      • 逻辑结构
      • 物理存储结构
    • 数据对象必定与一系列加在其上的操作相关联
    • 完成这些操作所用的方法就是算法

    抽象数据类型(Abstract Data Type)

    • 数据类型
      • 数据对象集
      • 数据集合相关联的操作集
    • 抽象:描述数据类型的方法不依赖具体实现
      • 与存放数据的机器无关
      • 与数据存储的物理结构无关
      • 与实现操作的算法和编程语言无关

    image.png

    算法

    • 一个有限指令集
    • 接受一些输入
    • 产生输出
    • 一定在有限步骤之后终止
    • 每一条指令必须
      • 有充分明确的目标,不可以有歧义
      • 计算机能处理的范围之内
      • 描述应不依赖于任意一种计算机语言以及具体的实现手段

    空间复杂度——占用存储单元的长度
    时间复杂度——耗费时间的长度

    机器运算加减法远比乘除法消耗小,所以时间复杂度一般只是考虑乘除法的。

    分析一般算法的效率时,考虑下面两种复杂度:

    • 最坏情况复杂度
    • 平均复杂度

    image.png

    O 最小上界
    陈越-数据结构 - 图3 最大下界
    image.png
    线性表
    多项式描述

    • 一维数组:第 i 项表示指数为 i 的系数,问题是存在大量无效计算
    • 二维数组:每一项为一个数组,其中分别是系数和对应的指数
    • 链表

    线性表:由同类型数据元素构成有序序列的线性结构

    • 表中元素个数为线性表的长度
    • 线性表没有元素,成为空表
    • 表起始位置称为表头,表结束位置成表尾

    image.png