数据结构 第一章绪论 学习笔记

1.1数据结构在程序设计中的应用

 数据结构+算法=程序,数据结构和算法是构成程序的两个重要的组成部分。

1.2本书讨论的主要内容

计算机能够求解的问题一般可以分为数值问题和非数值问题。数值问题抽象出的数据模型通常是数学方程,非数值问题抽象出的数学模型通常是线性表、树、图等数据结构。

非数值问题的数据组织和处理,主要内容有如下4点:

(1)数据的逻辑结构:线性表、树、图等数据结构,其核心是如何组织待处理的数据以及数据之间的关系。

(2)数据的存储结构:如何将线性表、树、图等数据结构存储到计算机的存储器中,其核心是如何有效地处理数据。

(3)算法:如何基于数据的某种存储结构实现插入、删除、查找等基本操作,其核心是如何有效地处理数据。

(4)常用数据处理技术:包括查找技术、排序技术、索引技术等。

1.3数据结构的基本概念

1.3.1数据结构

数据:所有能输入到计算机中并能被计算机程序识别和处理的符号集合

数据元素:数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。

数据项:构成数据元素的不可分割的最小单位。

数据结构:相互之间存在一定关系的数据元素的集合。需要强调的是,数据元素是讨论数据结构时涉及的最小数据单位,其中的数据项一般不予考虑。按照视点的不同,数据结构分为逻辑结构和存储结构。

按照视点的不同,数据结构分为逻辑结构和存储结构。

逻辑结构指数据元素之间逻辑关系的整体。

根据数据元素之间的不同,数据结构分为四类:

【1】集合:数据元素之间就是“属于同一个集合”,除此之外没有任何关系。

【2】线性结构:数据元素之间存在着一对一的线性关系。

【3】树结构:数据元素之间存在着一对多的层次关系。

 【4】图结构:数据元素之间存在着多对多的任意关系。

树结构和图结构也称为非线性结构。

数据的存储结构又称为物理结构,是数据及其逻辑结构在计算机中的表示。

顺序存储结构的基本思想是:用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系由元素的存储位置来表示。

链式存储结构的基本思想是:用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系用指针来表示。

数据的逻辑结构和存储结构是密切相关的两方面。一般来说,一种数据的逻辑结构可以用多种存储结构来存储,而采用不同的存储结构,其数据处理的效率往往是不同的。

1.3.2抽象数据类型

数据类型:是一个数据结构以及定义在该结构上的一组操作的总称。数据类型规定了该类型数据的取值范围和对这些数据所能采取的操作。

抽象:抽出问题本质的特征而忽略非本质的细节,是对具体事物的一个概括。

抽象数据类型:是一个数据结构以及定义在该结构上的一组操作的总称。抽象数据类型可理解为对数据类型的进一步抽象,数据类型和抽象数据类型的区别仅在于:数据类型指的  是高级程序设计语言支持的基本数据类型,而抽象数据类型指的是自定义的数据类型。

      在设计抽象数据类型时,把定义和实现分开来。定义部分只包含数据的逻辑结构和所允许的操作集合,一方面,使用者依据这些定义来使用抽象数据类型,即通过操作集合对该抽象数据类型进行操作;另一方面,实现者依据这些定义来完成各种操作的具体实现。

       抽象数据类型提供了定义和实现的不同视图,实现了封装和信息隐藏。

1.4算法及算法分析

1.4.1算法及其描述方法:

算法:算法被公认为是计算机科学的基石。算法是解决问题的方法。算法是对特定问题求解步骤的一种描述,是指令的有限序列。通常一个问题可以有多种算法,一个算法可以解决某个特定问题。

算法必须满足的五个重要特性

【1】输入:一个算法有零个或多个输入,这些输入通常取自某个特定的对象集合。

【2】输出:一个算法有一个或多个输出,通常输出与输入之间有着某种特定关系。

【3】有穷性:一个算法必须在执行有穷不后结束,且每步在有穷时间内完成。

【4】确定性:算法中每条指令必须有确切含义,在相同条件下,相同输入只能得到相同输出。

【5】可行性:算法描述操作可通过已实现基本操作执行有限次来实现。

好算法的五大特性:正确性、健壮性、简单性、抽象分级和高效性。

  算法的描述方法:

【1】自然语言:优点是容易理解,缺点是容易出现二义性。

【2】流程图:优点是直观易懂,缺点是严密性不足。

【3】程序设计语言:优点是能由计算机直接执行,缺点是抽象性差。

【4】伪代码:介于自然语言和程序设计语言之间的方法,它采用某一程序设计语言的基本语法,操作指令可以结合自然语言来设计。至于算法中自然语言的成分有多少,取决于算法的抽象级别。抽象级别高的伪代码自然语言多一些,抽象级别低的伪代码程序设计语言的语句多一些。

1.4.2算法分析

 度量算法效率的方法:通常采用事前分析估算的方法-----渐进复杂度,它是对算法所消耗资源的一种估算方法。

算法的时间复杂度:当问题规模充分大时,算法中基本语句的执行次数在渐进意义下的阶,称作算法的渐进时间复杂度,简称时间复杂度,通常用大O(读作“大欧”)记号表示。

最好、最坏和平均情况

算法的空间复杂度:在算法执行过程中,需要的辅助空间数量。辅助空间是除算法本身和输入输出数据所占据的空间外,算法临时开辟的存储空间,通常记作:S(n)=O(f(n))

算法分析举例:





你可能感兴趣的:(数据结构 第一章绪论 学习笔记)