基本概念

解决问题方法的效率

  • 跟数据的组织方式有关

  • 空间的利用率有关

  • 算法的巧妙程度有关

1. 什么是数据结构

  • 数据对象在计算机中的组织方式

    • 逻辑结构

      • 线性、树、图

    • 物理存储结构

      • 顺序存储、链式存储

  • 数据对象必定与一系列加在其上的操作相关联

  • 完成这些操作所用的方法就是算法

1.1 数据类型

  • 数据对象集

  • 数据集合相关联的操作集

例:整型(操作集:加减乘除;数据对象集:所有整型数)

1.2 抽象数据类型

抽象

描述数据类型的方法不依赖与具体实现

  • 与存放数据的机器无关

  • 与数据存储的物理结构无关

  • 与实现操作的算法和编程语言均无关

只描述数据对象集和相关操作集 是什么,并不涉及 如何做到 的问题

例:矩阵 的抽象数据类型的定义

2. 什么是算法

  • 一个有限指令集

  • 接受一些输入(有些情况下不需要输入)

  • 产生输出

  • 一定在有限步骤之后终止

  • 每一条指令必须

    • 有充分明确的目标,不可以有歧义

    • 计算机能处理的范围之内

    • 描述应不依赖于任何一种计算机语言以及具体的实现手段

2.1 什么是好的算法

    • 根据算法写成的程序在执行时占用存储单元的长度。这个长度往往与输入数据的规模有关。空间复杂度过高的算法可能导致使用的内存超限,造成程序非正常中的。

    • 根据算法写成的程序在执行时耗费时间的长度。这个长度也往往与输入数据的规模有关。时间复杂度过高的低效算法可能导致我们在有生之年都等不到运行结果。

在分析一般算法的效率时,我们经常关注下面两种复杂度

复杂度的渐进表示法

复杂度分析小窍门

最后更新于

这有帮助吗?