数据结构与算法 第一章 绪论


1 数据结构

目标

  • 了解数据结构的基本概念、研究对象、课程发展史
  • 掌握抽象数据类型的定义与实现,技术方法

1.1 什么是数据结构

程序设计的步骤:

  • 具体问题抽象为数学模型
  • 设计解决数学模型的算法
  • 编程
  • 调试

程序设计的实质:

  • 数据表示:将数据存储在计算机中
  • 数据处理:处理数据,求解问题

问题分为 :

  • 数值问题->数学方程
  • 非数值问题->数据结构 数据结构问题起源于程序设计

程序设计的发展阶段:

  1. 无结构阶段:在简单数据上作复杂运算(数值计算)
  2. 结构化阶段:数据结构+算法=程序 (更多的非数值计算问题无法用数学方程加以描述)
  3. 面向对象阶段:(对象+行为)=程序

数据结构与算法课程的研究对象
是研究非数值计算问题中计算机的操作对象以及它们之间的关系和操作的学科。

定义:

  • 数据以及数据之间的相互关系,即计算机中存储和组织数据的形式。(这种关系是抽象的,即并不涉及数据元素的具体内容)
  • 通常可以用一个二元组<D,R>来表示。或写成DS=<D,R>。其中D是数据集合(数据对象),R是 D中数据元素之间所存在的 关系的有限集合
  • 数据结构就是根据各种不同的数据集合和数据元素之间的关系,研究如何表示、存储和操作(查找、插入、删除、修改、排序)这些数据的技术。

课程发展史
1968年,Donald E. knuth在《计算机程序设计艺术》第一卷《基本算法》,阐述了数据的逻辑结构和存储结构及其操作,开创了数据结构的课程体系

1.2 基本概念

数据:描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。可分为数值类型和非数值类型

数据对象:性质相同的数据元素的集合,是数据的子集。数据对象中所有成员之间存在某种关系,如学生按学号的排序;按性别的分类等。

数据元素:组成数据的,有一定意义的基本单位,在计算机中通常作为整体处理。也被称为记录。

数据项:一个数据元素可以由若干个数据项组成,数据项是数据不可分割的最小单位

在这里插入图片描述

1.3 逻辑结构与存储结构

逻辑结构

数据的逻辑结构从逻辑关系上描述数据,与数据的存储无关,与数据元素的相对(存储)位置无关。
数据的逻辑结构可以看作是从具体问题抽象出来的数据模型

四类基本的逻辑结构:
在这里插入图片描述

存储结构

存储结构:数据的逻辑结构在计算机中的存储形式
实现存储结构的重点和难点:如何存储数据元素之间的逻辑关系
两种数据元素的存储结构:顺序存储、链式存储

小结

逻辑结构是面向问题的
存储结构是面向计算机的
目标:将数据及逻辑关系存储到计算机的内存中

1.4 抽象数据类型

定义:
由用户定义,用以表示应用问题的数据模型及定义在该模型上的一组操作
ADT:由基本的数据类型组成,并包括一组相关的服务(或称操作)。
抽象数据类型就是把一些有一定关联的基本数据类型打包,然后当做新的数据类型使用。
信息隐蔽和数据封装,使用与实现相分离。

标准格式:
在这里插入图片描述

2 算法

学习目标
了解算法、算法复杂性,掌握算法性能的评价方法
了解解决问题的一般过程和算法的逐步求精方法,掌握问题求解的基本过程和方法

算法的定义:

  • 解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。
  • 程序是算法的一种实现,计算机按照程序逐步执行算法,实现对问题的求解。

算法的特性:输入、输出、有穷性、确定性、可行性

算法设计的要求:正确性、可读性、健壮性、施加效率高和存储量低

算法效率的度量方法:事后统计方法、事前分析估算方法

算法的时间复杂度:基本语句的执行次数。可分最好、最坏、平均情况
在这里插入图片描述
在这里插入图片描述

算法的空间复杂度:一个算法在运行过程中临时占用存储空间大小的量度。

3 小结

数据结构与算法:

  • 数据结构:数据及其之间的相互关系,是对数据的抽象
  • 算法:求解特定问题的方法,是将输入转为输出的一系列计算步骤

课程的内容组织
1)四类基本的数据结构
在这里插入图片描述
针对每一种数据结构

  • 存储(顺序、链式)
  • 基本操作
  • 简单的算法
  • 经典的应用

2)两类基本的算法
在这里插入图片描述


传送门

下一章:数据结构与算法 第二章 线性表

猜你喜欢

转载自blog.csdn.net/RTyinying/article/details/111932218