读书笔记之《数据结构》---第一章 绪论

本章目录:

  1. 什么是数据结构
  2. 基本概念和术语
  3. 抽象数据类型的表示与实现
  4. 算法和算法分析

什么是数据结构
书中介绍了三个数据结构的例子分别是:表、树、图

基本概念和术语
数据: 是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中的并被计算机程序处理的符号总称。
数据元素:是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。一个数据元素由若干数据项组成,例如,数据库表中的一个元组就是一个数据元素,每一列就是一个数据项
数据对象:是性质相同的数据元素的集合,是数据的一个子集。
数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。数据元素之间存在的关系称为结构。通常有4类基本机构,集合、线性结构、树状结构、网状结构或图状结构。

数据结构的形式定义:数据结构是一个二元组,Data_Structure = (D,S),其中D是数据元素的有限集,S是D上关系的有限集。
结构定义中的“关系”描述是数据元素之间的逻辑关系,因此称为数据的逻辑结构
数据结构在计算机中的表示称为数据的物理结构,又称为存储结构。
数据元素之间的关系在计算机中有两种不同的表示方法:顺序映像和非顺序映像。并由此得到两种不同的存储结构,顺序存储结构和链式存储结构。

数据类型:用来刻画操作对象的特性。可分为两类:

  1. 原子类型:原子类型的值不可分解,例如C语言的中基本类型(整形、实型、字符型等)
  2. 结构类型:值是由若干成分按照某种结构组成的,因此是可以分解的。并且它的成分可以是非结构的也可以是结构的,例如数组的值可以每个分量是整数,也可以是数组

抽象数据类型:是指一个数学模型以及定义在该模型上的一组操作。
一个抽象数据类型的软件模块通常应包含定义、表示和实现3部分。

抽象数据类型的定义有一个值域和定义在该值域上的一组操作组成,若按其值得不同特性,可细分为一下3列类型:

  1. 原子类型:属于原子类型的变量的值不可再分解。
  2. 固定聚合类型:属该类型的变量,其值有确定数目的成分按照某种结构组成。
  3. 可变聚合类型:构成可变集合类型“值”的成分的数目不确定。

抽象数据类型的表现与实现
文中用一些C语言的类型和语句进行描述,不做记录

算法和算法分析
算法:对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。
一个算法还具有下列5个重要特性:

  1. 有穷性:一个算法必须总是在执行有穷步后结束,且每一步都可在有穷时间内完成
  2. 确定性:算法中每一条指令必须有确切的含义,对读者理解是不会产生二义性。
  3. 可行性:一个算法使能行的,即算法中描述的操作都可以通过已经实现的基本运算执行有限次来实现
  4. 输入:一个算法有零个或多个输入,这些输入取自于某个特定的对象的集合
  5. 输出:一个算法有一个或多个输出,这些输出是同输入有着某些特性关系的量

通过一个“好”算法应考虑达到以下目标:

  1. 正确性:算法应当满足具体问题的需求。
  2. 可读性:可读性号有助于人对算法的理解
  3. 健壮性:当输入非法数据时,算法也能适当地做出反应或进行处理,而不会产生莫名其妙的输出结构
  4. 效率与低存储量需求:效率是指算法的执行时间,存储量指算法用的内存

算法效率的度量,通常有两种方法:

  1. 事后统计的方法
  2. 事前分析估算的方法取决于多个因素:1. 依据的算法选用和种策略。2.问题的规模。3.书写程序的语言,语言级别越高,效率越低。4.编译程序所产生的机器代码的质量。5.机器执行指令的速度。

算法中基本操作重复执行的次数,是问题规模n的某个函数f(n),算法的时间度量记作T(n) = O( f(n) ),称作算法的渐近时间复杂度,简称时间复杂度

算法的存储空间需求:本书用空间复杂度最为算法所需存储空间的度量。记作S(n) = O( f(n) )。其中n为问题规模。

猜你喜欢

转载自blog.csdn.net/qq_25744595/article/details/82782386