第一章 绪论

1.1 数据结构的基本概念

1.1.1基本概念和术语:

  数据:是集合

  数据元素:是数据的基本单位

  数据对象:相同性质的数据元素的集合

  数据类型:是一个值的集合和定义在这个值上面的操作的总称。

  抽象数据类型(ADT):是指一个数学模型及定义在该模型上的一组操作。它的类型定义仅取决于它的一组逻辑特性,与其如何在计算机内部被表示无关。通常用(数据对象、数据关系、基本操作集)这样的三元组来表示抽象数据类型。

  数据结构:数据元素之间的关系 叫做 数据结构。它包括三方面的内容:逻辑结构,存储结构,和数据的运算。算法的设计取决于逻辑结构,算法的实现取决于存储结构。

 

1.1.2 数据结构三要素

1. 数据的逻辑结构:线性结构和非线性结构。

  • 线性结构
    • 一般线性表
    • 受限线性表
      • 栈和队列
    • 线性表推广
      • 数组
      • 广义表
  • 非线性结构
    • 集合
    • 树型结构
      • 一般树
      • 二叉树
    • 图状结构
      • 有向图
      • 无向图

2. 数据的存储结构

  数据的存储结构也称为数据的物理结构,它包括数据元素之间的表示和关系的表示。

  主要分为:

  (1)顺序存储:逻辑结构上相邻的元素物理上也相邻。优点:随机存取,占用内存小。缺点:只能使用相邻的存储单元,可能产生碎片。

  (2)链式存储:借助元素存储地址的指针来表示元素之间的逻辑关系。优点:不会出现碎片, 充分利用存储单元。缺点:每个元素因指针和占用额外的空间,只能实现顺序存取。

  (3)索引存储:存储元素的同时,添加索引表,表中的每项称为索引项,索引项的一般形式是(关键字,地址)。优点:速度快。缺点:附加的表占用空间,增删表耗费时间。

  (4)散列存储:根据元素的关键字直接计算出元素的存储地址,Hash存储。优点:增删改查都很快。缺点:散列函数不够好导致的hash值冲突。

3.数据运算

  运算的定义和实现,运算的定义是针对逻辑结构,运算的实现是针对存储结构。

 

  小tips:两种不同的数据结构,他们的逻辑结构和物理结构可能都相同,比如二叉树和二叉排序树,它们的逻辑和物理结构都相同,但是它们的定义和运算是完全不同的。

 

1.2 算法和算法评价

1.2.1 算法的基本概念

  算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每条指令都表示一个或多个操作。它必须满足的几个特性:

  (1)有穷性:一个算法必须总是在执行有穷步之后结束,每一步必须在有穷时间内完成。

  (2)确定性:算法的每条指令必须是有确切的含义,且对于相同的输入得到相同的输出。

  (3)可行性:一个算法是可行的,算法中的描述的操作都是可以通过已经实现的基本运算执行有限次来实现的。

  (4)输入:一个算法有零个或者多个输入,这些输入来自某个特定的对象的集合。

  (5)输出:一个算法有一个或者多个输出,这些输出是与输入有某种特定关系的量。

1.2.2 算法效率的度量

1.时间复杂度

一个语句的频度的指该语句在算法中被重复执行的次数。所有语句的频度之和记为T(n),它是算法问题规模n的函数,时间复杂度主要分析T(n)的数量级。

平均时间复杂度:所有可能输入实例在等概率出现的情况下,算法的期望运行时间。

2.空间复杂度

一些为对数据进行操作的工作单元和存储为实现计算所需的一些信息的辅助空间。

算法原地工作是指算法所需的辅助空间为常量O(1)。

 

你可能感兴趣的:(专业课复习,数据结构与算法,第一章,数据结构,专业课复习,复杂度分析,数据结构基本概念)