数据结构(C++版)第一章 绪论 学习笔记

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算法及其描述方法

算法是对特定问题求解步骤的一种描述,是指令的优先序列。算法必须满足下列5个重要特性:输入、输出、有穷性、确定性和可行性。

好的算法除了以上5个特性外还应满足:正确性、健壮性、简单性、抽象分级和高效性。

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

  1.4.2算法分析

    (1)度量算法效率的方法

如何度量一个算法的效率?一种方法是事后统计,但是这种方法的缺点太多。我们通常会采用另一种方法:事前分析估算的方法----渐进复杂度

(2)算法的时间复杂度

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

(3)最好、最坏和平均情况

(4)算法的空间复杂度

算法的空间复杂度是指在算法的执行过程中,需要的辅助空间数量。辅助空间是除算法本身和输入输出数据所占据的空间外,算法临时开辟的存储空间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值