数据结构ch01电子笔记
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.抽象数据类型
抽象数据类型(以下简称ADT)是一个数据结构以及定义在该结构上的一组操作的总称。
ADT可理解为对数据类型的进一步抽象,数据类型和ADT的区别仅在于:数据类型指的是高级程序设计语言支持的基本数据类型,而ADT指的是自定义的数据类型。
一个ADT的定义不涉及它的实现细节,在形式上可繁可简,本书对ADT的定义包括抽象数据类型名、数据元素之间逻辑关系的定义、每种基本操作的接口(操作的名称和该操作的前置条件、输入、功能、输出、后置条件的定义),形式如下:
三、数据结构的发展并未终结。
1.数据结构将继续随着程序设计的发展而发展;
2.面向各专门领域的数据结构得到研究和发展,各种空间数据结构也在探索中。
1.2 数据结构的研究对象
例1-1学籍管理问题
学号
姓名
性别
出生日期
政治面貌
0001
陆宇
男
1986/09/02
团员
0002
李明
男
1985/12/25
党员
0003
例1-5++x;
例1-6for(i=1;i<=n;++i)
++x;
例1-7for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
++x;
例1-8for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
{
c[i][j]=0;
for(k=1;k<=n;++k)
c[i][j]+=a[i][k]*b[k][j];
⑸ 高效性:
3. 算法的描述方法
常用的描述算法的方法有自然语言、流程图、程序设计语言和伪代码等。
上述伪代码可以再具体一些,用C++中的函数来描述,并且局部变量可以不声明。
1.4.2 算法
1.度量算法效率的方法
一种方法是事后统计的方法,先将算法实现,然后输入适当的数据运行,测算其时间和空间开销。其缺点:⑴编写程序实现算法将花费较多的时间和精力;⑵所得实验结果依赖于计算机的软硬件等环境因素,有时容易掩盖算法本身的优劣。
汤晓影
女
1986/03/26
团员
…
…
…
…
…
例1-2人——机对弈问题
例1-3教学计划编排问题
课程编号
课程名称
先修课程
c1
高等数学
无
c2
计算机科学导论
无
c3
离散数学
c1
c4
程序设计语言C++
c1、c2
c5
数据结构
c3、c4
c6
计算机原理
c2、c4
c7
数据库原理
c4、c5、c6
1.3 数据结构的基本概念
1.3.1 数据结构
数据结构的基本操作应具有如下特性:
⑴抽象性:
⑵基本性:
⑶完备性:
⑷一般性:
1.3.3 抽象数据类型
1.数据类型
数据类型是一组值的集合以及定义于这个值集上的一组操作的总称。数据类型规定了该类型数据的取值范围和对这些数据所能采取的操作。
2.抽象
所谓抽象,就是抽出问题本质的特征而忽略非本质的细节,是对具体事物的一个概括。
4.算法的空间复杂度
算法的空间复杂度是指在算法的执行过程中,需要的辅助空间数量。辅助空间是除算法本身和输入输出数据所占据的空间外,算法临时开辟的存储空间。通常记作:S(n)=O(f(n)),其中,n为问题规模,分析方法与算法的时间复杂度类似。
5. 算法分析举例
定理1-1若A(n)=amnm+am-1nm-1+…+a1n+a0是一个m次多项式,则A(n)=O(nm)。
第
1.1 数据结构的兴起和发展
一、数据结构起源于程序设计。
·程序设计的新问题:应如何组织待处理的数据以及数据之间的关系(结构)。
·70年代初,数据结构作为一门独立的课程开始进入大学课堂。
二、数据结构随着程序设计的发展而发展。
程序设计经历了三个阶段:无结构阶段、结构化阶段和面向对象阶段,相应地,数据结构的发展也经历了三个阶段:
顺序存储结构的基本思想是:用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系是由元素的存储位置来表示的。
链接存储结构的基本思想是:用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系是用指针来表示的。
1.
·数据结构的基本操作或基本运算是指:
·数据结构的基本操作的接口的全体称为数据结构的访问接口。
定义1-1若存在两个正的常数c和n0,对于任意n≥n0,都有T(n)≤c×f(n),则称T(n)=O(f(n))(或称算法在O(f(n))中)。
例1-4求下面程序段的时间复杂度。
for(i=0; i<n; i++)
for(j=0; j<n; j++)
x++;
3.最好、最坏和平均情况
例如,在一维整型数组A[n]中顺序查找与给定值k相等的元素(假设该数组中有且仅有一个元素值为k),顺序查找算法如下:
通俗地讲,算法是解决问题的方法;
严格地说,算法是对特定问题求解步骤的一种描述,是指令的有限序列。
算法必须满足下列五个重要特性:
⑴输入:
⑵输出:
⑶有穷性:
⑷确定性:
⑸可行性:
2.什么是“好”算法
一个“好”算法首先要满足算法的五大特性,此外还要具备下列特性:
⑴ 正确性:
⑵ 鲁棒性:
⑶ 简单性:
⑷ 抽象分级:
1.数据:在计算机科学中是指所有能输入到计算机中并能被计算机程序识别和处理的符号集合。
2.数据元素:是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
构成数据元素的不可分割的最小单位称为数据项。
3.数据对象:是具有相同性质的数据元素的集合,是数据的子集。
4.数据结构:是指相互之间存在一定关系的数据元素的集合。按照视点的不同,数据结构分为逻辑结构和存储结构。
另一种是事前分析估算的方法——渐进复杂度,它是对算法所消耗资源的一种估算方法。
2.算法的时间复杂度
问题规模是指输入量的多少。运行算法所需要的时间T是问题规模n的函数。
基本语句是执行次数与整个算法的执行次数成正比的语句。
这种衡量效率的方法得出的不是时间量,而是一种增长趋势的度量。即当只考察问题规模充分大时,算法中基本语句的执行次数在渐近意义下的阶,称作算法的渐进时间复杂度,简称时间复杂度,通常用大O(读作“大欧”)记号表示。
ADT抽象数据类型名
Data
数据元素之间逻辑关系的定义
Operation
操作1
前置条件:执行此操作前数据所必须的状态
输入:执行此操作所需Baidu Nhomakorabea的输入
功能:该操作将完成的功能
输出:执行该操作后产生的输出
后置条件:执行该操作后数据的状态
操作2
……
……
操作n
……
endADT
1.4 算法
1.4.1 算法
1.什么是算法
}
例1-9for(i=1;i<=n;++i)
for(j=1;j<=i-1;++j)
++x;
例1-10for (i=1; i<=n; i=2*i)
++x;
数据的逻辑结构是指数据元素之间逻辑关系的整体。
根据数据元素之间逻辑关系的不同,数据结构分为四类:
⑴集合数据元素之间的关系是。
⑵线性结构数据元素之间的关系是。
⑶树结构数据元素之间的关系是。
⑷图结构数据元素之间的关系是。
数据的存储结构又称为物理结构,是数据及其逻辑结构在计算机中的表示。
有两种存储结构:顺序存储结构和链接存储结构。
抽象数据类型(以下简称ADT)是一个数据结构以及定义在该结构上的一组操作的总称。
ADT可理解为对数据类型的进一步抽象,数据类型和ADT的区别仅在于:数据类型指的是高级程序设计语言支持的基本数据类型,而ADT指的是自定义的数据类型。
一个ADT的定义不涉及它的实现细节,在形式上可繁可简,本书对ADT的定义包括抽象数据类型名、数据元素之间逻辑关系的定义、每种基本操作的接口(操作的名称和该操作的前置条件、输入、功能、输出、后置条件的定义),形式如下:
三、数据结构的发展并未终结。
1.数据结构将继续随着程序设计的发展而发展;
2.面向各专门领域的数据结构得到研究和发展,各种空间数据结构也在探索中。
1.2 数据结构的研究对象
例1-1学籍管理问题
学号
姓名
性别
出生日期
政治面貌
0001
陆宇
男
1986/09/02
团员
0002
李明
男
1985/12/25
党员
0003
例1-5++x;
例1-6for(i=1;i<=n;++i)
++x;
例1-7for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
++x;
例1-8for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
{
c[i][j]=0;
for(k=1;k<=n;++k)
c[i][j]+=a[i][k]*b[k][j];
⑸ 高效性:
3. 算法的描述方法
常用的描述算法的方法有自然语言、流程图、程序设计语言和伪代码等。
上述伪代码可以再具体一些,用C++中的函数来描述,并且局部变量可以不声明。
1.4.2 算法
1.度量算法效率的方法
一种方法是事后统计的方法,先将算法实现,然后输入适当的数据运行,测算其时间和空间开销。其缺点:⑴编写程序实现算法将花费较多的时间和精力;⑵所得实验结果依赖于计算机的软硬件等环境因素,有时容易掩盖算法本身的优劣。
汤晓影
女
1986/03/26
团员
…
…
…
…
…
例1-2人——机对弈问题
例1-3教学计划编排问题
课程编号
课程名称
先修课程
c1
高等数学
无
c2
计算机科学导论
无
c3
离散数学
c1
c4
程序设计语言C++
c1、c2
c5
数据结构
c3、c4
c6
计算机原理
c2、c4
c7
数据库原理
c4、c5、c6
1.3 数据结构的基本概念
1.3.1 数据结构
数据结构的基本操作应具有如下特性:
⑴抽象性:
⑵基本性:
⑶完备性:
⑷一般性:
1.3.3 抽象数据类型
1.数据类型
数据类型是一组值的集合以及定义于这个值集上的一组操作的总称。数据类型规定了该类型数据的取值范围和对这些数据所能采取的操作。
2.抽象
所谓抽象,就是抽出问题本质的特征而忽略非本质的细节,是对具体事物的一个概括。
4.算法的空间复杂度
算法的空间复杂度是指在算法的执行过程中,需要的辅助空间数量。辅助空间是除算法本身和输入输出数据所占据的空间外,算法临时开辟的存储空间。通常记作:S(n)=O(f(n)),其中,n为问题规模,分析方法与算法的时间复杂度类似。
5. 算法分析举例
定理1-1若A(n)=amnm+am-1nm-1+…+a1n+a0是一个m次多项式,则A(n)=O(nm)。
第
1.1 数据结构的兴起和发展
一、数据结构起源于程序设计。
·程序设计的新问题:应如何组织待处理的数据以及数据之间的关系(结构)。
·70年代初,数据结构作为一门独立的课程开始进入大学课堂。
二、数据结构随着程序设计的发展而发展。
程序设计经历了三个阶段:无结构阶段、结构化阶段和面向对象阶段,相应地,数据结构的发展也经历了三个阶段:
顺序存储结构的基本思想是:用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系是由元素的存储位置来表示的。
链接存储结构的基本思想是:用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系是用指针来表示的。
1.
·数据结构的基本操作或基本运算是指:
·数据结构的基本操作的接口的全体称为数据结构的访问接口。
定义1-1若存在两个正的常数c和n0,对于任意n≥n0,都有T(n)≤c×f(n),则称T(n)=O(f(n))(或称算法在O(f(n))中)。
例1-4求下面程序段的时间复杂度。
for(i=0; i<n; i++)
for(j=0; j<n; j++)
x++;
3.最好、最坏和平均情况
例如,在一维整型数组A[n]中顺序查找与给定值k相等的元素(假设该数组中有且仅有一个元素值为k),顺序查找算法如下:
通俗地讲,算法是解决问题的方法;
严格地说,算法是对特定问题求解步骤的一种描述,是指令的有限序列。
算法必须满足下列五个重要特性:
⑴输入:
⑵输出:
⑶有穷性:
⑷确定性:
⑸可行性:
2.什么是“好”算法
一个“好”算法首先要满足算法的五大特性,此外还要具备下列特性:
⑴ 正确性:
⑵ 鲁棒性:
⑶ 简单性:
⑷ 抽象分级:
1.数据:在计算机科学中是指所有能输入到计算机中并能被计算机程序识别和处理的符号集合。
2.数据元素:是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
构成数据元素的不可分割的最小单位称为数据项。
3.数据对象:是具有相同性质的数据元素的集合,是数据的子集。
4.数据结构:是指相互之间存在一定关系的数据元素的集合。按照视点的不同,数据结构分为逻辑结构和存储结构。
另一种是事前分析估算的方法——渐进复杂度,它是对算法所消耗资源的一种估算方法。
2.算法的时间复杂度
问题规模是指输入量的多少。运行算法所需要的时间T是问题规模n的函数。
基本语句是执行次数与整个算法的执行次数成正比的语句。
这种衡量效率的方法得出的不是时间量,而是一种增长趋势的度量。即当只考察问题规模充分大时,算法中基本语句的执行次数在渐近意义下的阶,称作算法的渐进时间复杂度,简称时间复杂度,通常用大O(读作“大欧”)记号表示。
ADT抽象数据类型名
Data
数据元素之间逻辑关系的定义
Operation
操作1
前置条件:执行此操作前数据所必须的状态
输入:执行此操作所需Baidu Nhomakorabea的输入
功能:该操作将完成的功能
输出:执行该操作后产生的输出
后置条件:执行该操作后数据的状态
操作2
……
……
操作n
……
endADT
1.4 算法
1.4.1 算法
1.什么是算法
}
例1-9for(i=1;i<=n;++i)
for(j=1;j<=i-1;++j)
++x;
例1-10for (i=1; i<=n; i=2*i)
++x;
数据的逻辑结构是指数据元素之间逻辑关系的整体。
根据数据元素之间逻辑关系的不同,数据结构分为四类:
⑴集合数据元素之间的关系是。
⑵线性结构数据元素之间的关系是。
⑶树结构数据元素之间的关系是。
⑷图结构数据元素之间的关系是。
数据的存储结构又称为物理结构,是数据及其逻辑结构在计算机中的表示。
有两种存储结构:顺序存储结构和链接存储结构。