Chapter 1 绪论

文章目录

  • 1. 概要
  • 2. 数据结构的基本概念
    • 2.1 数据、数据对象、数据元素、数据结构、数据类型
    • 2.2 数据抽象、抽象数据类型、数据结构的抽象层次
    • 2.3 面向对象、对象与类的关系、类的继承关系、对象间的消息通信
  • 3. 算法的设计与分析
    • 3.1 算法的定义和特性
    • 3.2 算法的设计方法
    • 3.3 算法的性能分析
      • 3.3.1 时间复杂度
      • 3.3.2 空间复杂度
  • 4. 数据结构与算法的描述语言

1. 概要


课程内容
当解决某一问题而选择数据结构时,应当执行以下几个步骤:

  1. 分析问题,确定算法遇到的资源限制(内外存空间限制和执行时间限制)
  2. 确定必须支持的基本运算,度量每个运算所受到的资源限制。基本运算包括增删查
  3. 选择最接近这些资源开销的数据结构

这三个步骤实际上贯彻了一种以数据为中心的设计观点。

内容体系

数据表示 数据处理
抽象 逻辑结构 基本运算
实现 存储结构 算法

数据结构的核心是分解与抽象

数据结构的三方面内容
数据元素间的逻辑关系,即数据的逻辑结构;
数据元素及其关系在计算机存储内的表示,即数据的存储表示;
数据的运算,即对数据元素施加的操作

逻辑结构

  • 数据的逻辑结构从逻辑关系上描述数据,与数据的存储无关;
  • 数据的逻辑结构可以看作是从具体问题抽象出来的数据模型;
  • 数据的逻辑结构与数据元素本身的形式、内容无关;
  • 数据的逻辑结构与数据元素的相对存储位置无关。

数据结构4种基本存储结构

  • 顺序存储(主要用于内存)
  • 链接存储(内存)
  • 索引存储(主要用于外存)
  • 散列存储(外存)

2. 数据结构的基本概念


2.1 数据、数据对象、数据元素、数据结构、数据类型

数据结构的目的在于解决如何在计算机中组织、存储、传递数据。

数据
数据(data)是信息的载体,是描述客观事物的数、字符,以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。

数据大致分为两类:

  • 数值性数据:包括整数、浮点数、复数、双精度数等。主要用于工程科学计算,以及商业事务处理
  • 非数值数据:主要包括字符和字符串,以及文字、图形、图像、语音等数据。

数据对象(来自百度)
数据的子集。具有相同性质的数据成员(数据元素)的集合

数据对象是必须由软件理解的复合信息表示。数据对象可能是外部实体、事物、偶发事件或事件、角色、组织单位、地点或结构等。例如,一个人或一部车可以被认为是数据对象,在某种意义上它们可以用一组属性来定义。数据对象描述包括了数据对象及其所有属性。数据对象只封装数据(没有对数据的操作)。

数据元素
数据的基本单位是数据元素(data element)。
一个数据元素可由若干个数据项(data item) 组成,它是一个数据整体中相对独立的单位。
数据元素中的数据项可以分为两种:

  • 初等项:是数据处理时不能再分割的最小单位。
  • 组合项:可以划分为更小项。

数据元素之间的关系称为结构。

数据结构
数据结构由某一数据元素的集合和该集合中数据元素之间的关系组成。记为:

Data_Structure = {D,R}
其中D是某一数据元素的集合,R是该集合中所有数据元素之间的关系的有限集合。

依据数据元素之间的关系不同,数据结构分为两大类:

  • 线性结构
    对线性结构中数据元素存取方法的不同,又可分为直接存取结构、顺序存取结构和字典结构
  • 非线性结构
    根据关系的不同,可分为层次结构和群结构。层次结构是按层次划分的数据元素的集合,指定层次上元素可以有0个或多个处于下一个层次上的直接所属下层元素。群结构中所有元素之间无顺序关系。

数据类型
类型是一组值的集合,数据类型是指一种类型,以及定义于这个值集合上的一组操作的总称。
类型可分为原子类型和结构类型两种

2.2 数据抽象、抽象数据类型、数据结构的抽象层次

数据抽象和数据结果的抽象层次见书P7概念

抽象数据类型

  • 抽象数据类型通常是指由用户定义,用以表示应用问题的数据模型,是将数据结构作为一个软件构件的实现。
  • 抽象数据类型由基本的数据类型组成,并包括一组相关的服务(或称操作)
  • 抽象数据类型的特征是使用与实现分离,实行封装和信息隐蔽。即在抽象数据类型设计时,把类型的声明与其实现分离开。
  • 抽象数据类型可用(D, S, P)三元组表示,其中,D 是数据元素的集合(简称数据对象),S 是 D上的关系集合,P 是对 D 的基本操作集合

2.3 面向对象、对象与类的关系、类的继承关系、对象间的消息通信

面向对象
面向对象 = 对象 + 类 + 继承 + 消息通信

对象与类的关系

类的继承关系

对象间的消息通信

3. 算法的设计与分析


3.1 算法的定义和特性

算法定义
是对特定问题求解步骤的一种描述,算法是指令的有限序列,其中每一条指令表示一个或多个操作。

算法特性

  • 有输入
  • 有输出
  • 确定性:算法的每一步都应确切地、无歧义地定义
  • 有穷性(算法和程序不同,程序可不满足这条特性)
  • 能行性

3.2 算法的设计方法

自顶向下,逐步求精

  1. 首先,要搞清楚要解决什么问题
  2. 其次,考虑问题解决方案
  3. 然后将其细化

3.3 算法的性能分析

判断一个算法的优劣,主要有以下几个标准:

  • 正确性
  • 可使用性
  • 可读性
  • 效率(时间代价、空间代价)
    度量:事前估计(时间复杂度度量、空间复杂度度量)
  • 健壮性
  • 简单性

3.3.1 时间复杂度

时间复杂度的渐进表示法——大O表示法:描述最坏情况下的时间代价
Chapter 1 绪论_第1张图片

c < l o g 2 n < n < n l o g 2 n < n 2 < n 3 < 2 n < 3 n < n ! cc<log2n<n<nlog2n<n2<n3<2n<3n<n!

符号
Chapter 1 绪论_第2张图片

3.3.2 空间复杂度

4. 数据结构与算法的描述语言


你可能感兴趣的:(DataStructure)