第一章 概论

1.1 基本概念和术语

数据(Data)是信息的载体,它能够被计算机识别、存储和加工处理。

数据元素(Data Element)是数据的基本单位。有些情况下,数据元素也称为元素、结点、顶点、记录。数据项是具有独立含义的最小标识单位。

数据结构(Data Structure)指的是数据之间的相互关系,即数据的组织形式。数据结构一般包括以下三个方面的内容:

(1)数据元素之间的逻辑关系,也称为数据的逻辑结构(Logical Structure);

(2)数据元素及其关系在计算机存储器内的表示,称为数据的存储结构(Storage Structure);

(3)数据的运算,即对数据施加的操作。

数据的运算是定义在数据的逻辑结构上的,每种逻辑结构都有一个运算的集合。

数据类型(Data Type),所谓数据类型是一个值的集合以及在这些值上定义的一组操作的总称。

按“值”是否可分解,可将数据类型划分为两类:原子类型,其值不可分解;结构类型,其值可分解为若干成分(或称为分量)。

抽象数据类型(Abstract Data Type 简称ADT)是指抽象数据的组织和与之相关的操作。它们可以看作是数据的逻辑结构及其在逻辑结构上定义的操作。

数据的逻辑结构有两大类:

(1)线性结构

线性结构的逻辑特征是:若结构是非空集,则有且仅有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前趋和一个直接后继。

(2)非线性结构

非线性结构的逻辑特征是一个结点可能有多个直接前趋和直接后继。

数据的存储结构可用以下四种基本的存储方法得到:

(1)顺序存储方法

该方法是把逻辑上相邻的结点存储在物理位置上相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现。由此得到的存储表示称为顺序存储结构(Sequential Storage Structure),通常顺序存储结构是借助于程序语言的数组来描述的。

2)链接存储方法

该方法不要钱逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系是由附加的指针字段表示的。由此得到的存储表示称为链式存储结构(Linked Storage Structure),通常要借助于程序语言的指针类型来描述它。

(3)索引存储方法

该方法通常是在存储结点信息的同时,还建立附加的索引表。索引表中的每一项称为索引项,索引项的一般形式是:(关键字,地址),关键字是能惟一标识一个结点的那些数据项。

若每个结点在索引表中都有一个索引项,则该索引表称为稠密索引(Dense Index)。若一组结点在索引表中只对应一个索引项,则该索引表称为稀疏索引(Sparse Index)。

(4)散列存储方法

该方法的基本思想是根据结点的关键字直接计算出该结点的存储地址。

1.2 学习数据结构的意义

1.3 算法的描述和分析

一个算法是一系列将输入转换为输出的计算步骤。

算法求解问题的输入量称为问题的规模(Size)。

一个算法的时间复杂度(Time Complexity,也称时间复杂性)T(n)则是该算法的时间耗费,它是该算法所求解问题规模n的函数。当问题的规模趋向无穷大时,我们把时间复杂度T(n)的数量级(阶)称为渐进时间复杂度。

T(n)f(n)是定义在正整数集合上的两个函数,则T(n)=O(f(n))表示存在正的常数Cn0,使得当nn0时都满足0T(n)Cf(n)

当有若干个循环语句时,算法的时间复杂度是由嵌套层数最多的循环语句中最内层语句的频度f(n)决定的。

一个算法的空间复杂度(Space ComplexityS(n)定义为该算法所耗费的存储空间,它也是问题规模n的函数。渐进空间复制度也常常简称为空间复杂度。

算法的时间复杂度和空间复杂度合称为算法的复杂度。

你可能感兴趣的:(数据结构学习笔记)