资料课件说明教案d_第1页
资料课件说明教案d_第2页
资料课件说明教案d_第3页
资料课件说明教案d_第4页
资料课件说明教案d_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章绪论第2

页第1章绪论

1.1什么是数据结构

1.2基本概念和术语

1.3抽象数据类型

1.4算法和算法分析第3

页1.1什么是数据结构处理数据的种类数据数值数据非数值数据数值(整数,实数)

文本图象声音影像数据:所有能输入到计算机中,并能被其存储、加工、处理的符号的集合。数据就是客观对象的符号表示。

程序数据(Data)信息(Information)8,12,22,33,8,12,22第4

页1.1什么是数据结构数值问题例1:已知游泳池的长len和宽width,求面积area。建立模型

涉及的对象:游泳池的长len,宽width,面积area

对象之间的关系:area=len×width设计求解问题的方法编程 intmain() { intlen,width,area;

scanf(”%d%d”,&len,&width);

area=len*width;

printf(”area=%d\n”,area);

return0;}第5

页1.1什么是数据结构非数值问题 例2:已知学生选课情况,安排课程考试的日程,要求在尽可能短的时间内完成考试。学生选课情况表姓名选修课1 选修课2选修课3 杨润生算法分析(A)形式语言(B)计算机网络(E)

石磊计算机图形学(C)模式识别(D)

魏庆涛计算机图形学(C)计算机网络(E)人工智能(F)

马耀先模式识别(D)人工智能(F)算法分析(A)

齐砚生形式语言(B)人工智能(F)第6

页1.1什么是数据结构学生选课情况表姓名选修课1 选修课2选修课3 杨润生算法分析(A)形式语言(B)计算机网络(E)

石磊计算机图形学(C)模式识别(D)

魏庆涛计算机图形学(C)计算机网络(E)人工智能(F)

马耀先模式识别(D)人工智能(F)算法分析(A)

齐砚生形式语言(B)人工智能(F)◆建立模型

问题涉及的对象:课程

课程之间的关系:同一学生选修的课程之间有某种“冲突”关系。要求:同一个学生选修的课程不能安排在同一时间内进行考试。

第7

页1.1什么是数据结构学生选课情况表姓名选修课1 选修课2选修课3 杨润生算法分析(A)形式语言(B)计算机网络(E)

石磊计算机图形学(C)模式识别(D)

魏庆涛计算机图形学(C)计算机网络(E)人工智能(F)

马耀先模式识别(D)人工智能(F)算法分析(A)

齐砚生形式语言(B)人工智能(F)DEFCBA顶点:表示课程同一学生选修的课程用一条边连接有边连接的课程不能安排在同一时间考试第8

页DEFCBA1.1什么是数据结构设计求解问题的方法 课程考试可用图的着色法求解问题。 每一种颜色代表一个考试时间,着上相同颜色的顶点是可以安排在同一时间考试的课程; 用尽可能少的颜色为图的顶点着色,相邻的顶点着上不同的颜色。ACEFBD如下是一种考试日程:1:算法分析(A)计算机图形学(C)2:形式语言(B)模式识别人工智能(D)3:计算机网络(E)4:人工智能(F)第9

页1.1什么是数据结构解题流程:设:G表示课程关系图,V是图G中所有尚未着色的顶点集合,NEW表示可以用新颜色着色的顶点集合,Day表示考试的天数。I.

InputData:II.

ProcessData:III.

OutputInformation:Day初始化:day=1;V={图中所有顶点的集合};判断V是否非空?

yes:初始化NEW为空集合;着色:V中取一点,找出所有与之“不相邻”的顶点; 将这些顶点加入NEW;

从V中去掉这些顶点。

day=day+1;返回判断V是否非空。 no:循环结束第10

页1.1什么是数据结构数值问题与非数值问题的比较数值问题*对象:len,wide,area

——用数值表示*对象之间的关系:area=lenwide

——用方程或函数表示*数据存储:可用程序设计语言中的实型变量存储数据*问题求解方法:某种数值计算方法求解

非数值问题*对象:课程——用课程名表示*对象之间的关系:课程间有“冲突”关系*数据存储:要保存数据及数据之间的关系*问题求解方法不能用数值表示课程之间的这种关系不能用方程或函数表示第11

页1.1什么是数据结构什么是数据结构?

数据结构是一门研究非数值问题中计算机的操作对象以及它们之间的关系和操作的学科。数据结构所研究的问题 非数值数据之间的结构关系,及如何表示,如何存储,如何处理。第12

页1.1什么是数据结构1968年美国D.E.Knuth教授出版:TheArtofComputerProgramming《计算机程序设计技巧》开创了数据结构的最初体系。计划共写7卷,然而出版三卷之后,已震惊世界,获得计算机科学界的最高荣誉图灵奖,年仅36岁。1938年出生,25岁毕业于加州理工学院数学系,博士毕业后留校任教,28岁任副教授。30岁时,加盟斯坦福大学计算机系,任教授。第13

页1.1什么是数据结构数据结构随着程序设计的发展而发展无结构阶段结构化阶段:数据结构+算法=程序面向对象阶段:(数据结构+算法)=程序

数据结构的发展并未终结研究的范围不断扩展,算法不断更新描述手段、使用语言不断更新第14

页1.2基本概念和术语数据(data):客观对象的符号表示。数据元素(dataelement):数据的基本单位,在计算机程序中作为一个整体考虑和处理,通常具有完整确定的实际意义。(节点、顶点、记录)数据项(dataitem):数据不可分割的最小标识单位。一个数据元素可由若干数据项组成,通常不具有完整确定的实际意义。(字段)0001刘建国男19491001工程师0002黄红女19650506助工0003张华女19461118高工……………第15

页1.2基本概念和术语数据结构(datastructure):相互之间存在一种或多种特定关系的、具有相同特征的数据元素的集合。

数据结构:带有结构和操作的数据元素集合。

结构:数据元素之间的关系;

操作:对数据的加工处理。

Data_Structure=(D,S) D:数据元素集合;S:D的关系集合第16

页1.2基本概念和术语数据结构讨论两方面问题: 1)数据的逻辑结构:从具体问题抽象出来的数据模型,反映了事物的组成及事物之间的逻辑关系。 2)数据的存储结构(也称为物理结构):解决各种逻辑结构在计算机中的物理存储和表示。第17

页1.2基本概念和术语:数据的逻辑结构数据的逻辑结构:数据之间的结构关系,是具体关系的抽象。有四种类型:集合:数据元素间除“同属于一个集合”外,无其它关系线性结构:一个对一个,如线性表/栈/队列树形结构:一个对多个,如树图状结构:多个对多个,如图第18

页1.2基本概念和术语:数据的逻辑结构线性结构 学生基本情况登记表,记录了每个学生的学号、姓名、专业、政治面貌。按学生的学号顺序排列。

001003002004006005008007学生间学号顺序关系是一种线性结构关系线性结构:除第一个元素和最后一个元素外,其他元素都有且仅有一个直接前趋,有且仅有一个直接后继。学号姓名 专业政治面貌001 王洪 计算机党员002孙文计算机团员003 谢军 计算机团员004 李辉 计算机团员005 沈祥福计算机党员006 余斌 计算机团员

007 巩力 计算机团员

008 孔令辉计算机团员第19

页1.2基本概念和术语:数据的逻辑结构树形结构 假设某家族有10个成员A、B、C、D、E、F、G、H、I、J,他们之间的血缘关系可以用图表示。JIACBDHGFE树形结构:每一个元素只有一个直接前趋,有0个或多个直接后继。第20

页1.2基本概念和术语:数据的逻辑结构图形结构 工程进度图。图形结构:每一个元素可以有0个或多个直接前趋,有0个或多个直接后继。

V1

V0

V2

V3

V4

V5

V6第21

页1.2基本概念和术语:数据的逻辑结构数据逻辑结构的表示方法:图示表示 图示表示是由顶点和边构成的图,其中顶点表示数据,边表示数据之间的结构关系。二元组表示 二元组表示是用一个二元组(D,S)表示数据结构,其中D是数据元素集合,S是D上关系的集合。第22

页1.2基本概念和术语:数据的逻辑结构例:学生基本情况表的二元组表示(D,S)

001003002004006005008007D={001,002,003,004,005,006,007,008}S={R}R={<001,002>,<002,003>,<003,004>,<004,005>,<005,006>,<006,007>,<007,008>}第23

页1.2基本概念和术语:数据的逻辑结构例:家族树的二元组表示(D,S)

D={A,B,C,D,E,F,G,H,I,J}S={R}R={<A,B>,<A,C>,<A,D>,<B,E>,<B,F>,<C,G>,<D,H>,<D,I>,<D,J>}JIACBDHGFE第24

页1.2基本概念和术语:数据的存储结构数据的存储结构 存储结构在计算机中的表示实质是内存分配。具体实现时要依赖于计算机语言。常见的数据存储结构顺序存储方式链式存储方式索引方式散列方式第25

页1.2基本概念和术语:数据的存储结构顺序存储结构: 借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系。例如,用一维数组存储线性结构。元素n……..元素i……..元素2元素1L0L0+mL0+(i-1)*mL0+(n-1)*m存储地址存储内容Loc(元素i)=L0+(i-1)*m第26

页1.2基本概念和术语:数据的存储结构链式存储结构:借助指示元素存储地址的指针来表示数据元素之间的逻辑关系。例如,用链表(指针)存储线性结构。1536元素21400元素11386元素3∧元素41345P存储地址存储内容指针

1345元素1

1400

1386元素4

…….

……..

…….

1400元素2

1536

…….

……..

…….

1536元素3

1386第27

页1.2基本概念和术语逻辑结构与存储结构的关系:数据的逻辑结构属于用户视图,是面向问题的,反映了数据内部的构成方式;数据的存储结构属于具体实现的视图,是面向计算机的。一种数据的逻辑结构可以用多种存储结构来存储;而采用不同的存储结构,其数据处理的效率往往是不同的。算法的设计取决于所选定的逻辑结构,算法的实现则依赖于采用的存储结构。第28

页1.3抽象数据类型基于高级程序语言的数据类型可以用来描述数据的存储结构。数据类型:值的集合+相应的一组操作。抽象数据类型,简称ADT(AbstractDataType):定义了一组操作的数学抽象模型。是一种描述用户与数据之间接口的抽象模型。它由三个不可分割的部分组成的三元组:ADT抽象数据类型名{ 数据对象D:<数据对象的定义> 数据关系S:<数据关系的定义> 数据操作P:<基本操作的定义>}第29

页1.3抽象数据类型抽象数据类型使用的目的在于隐藏运算实现的细节和内部数据结构。抽象数据类型所要包括的操作由设计者根据需要确定。抽象数据类型的定义仅取决于它的一组逻辑特性,而与其在计算机内部如何表示和实现无关,即不论其内部结构如何变化,只要它的数学特性不变,都不影响其外部的使用。第30

页1.3抽象数据类型ADTList{

数据对象:D={a1,a2,...,ai-1,ai,ai+1,…,an}

数据关系:R={<a1,a2>,<a2,a3>,…,<an-1,an>}

基本操作:<基本操作的定义>

InitList(&L)

操作结果:构造一个空的线性表L;

DetroyList(&L)

初始条件:线性表已存在 操作结果:销毁线性表L

ClearList(&L)

初始条件:线性表已存在 操作结果:将L重置为空表

ListEmpty(L)

初始条件:线性表已存在 操作结果:若L为空表返回TRUE,否则返回FALSE…}第31

页1.4算法与算法分析 算法(algorithm)是为了解决某类问题而规定的一系列有限长的操作序列。 一个算法必须满足以下五个重要特性:有穷性、确定性、可行性、输入和输出。有穷性:算法必须在有限步内结束;每一步有限完成。确定性:算法的操作清晰无二义性。可行性:算法的操作必须能够实现。输入:有0个或多个输入。输出:有1个或多个输出。第32

页1.4算法与算法分析“好”算法的标准: 正确性,可读性,健壮性,高效率与低存储。评价算法的度量:程序所用算法运行时所要花费的时间代价程序中使用的数据结构占有的空间代价 算法的时间复杂度:算法的时间效率 算法的空间复杂度:算法的空间效率第33

页1.4算法与算法分析评价算法效率的方法“未雨绸缪”——事前分析估算法:

对算法所需要的计算机资源——时间和空间进行估算。“亡羊补牢”——事后统计法:

通过上机运行,测试算法花费的时间。算法的平均执行时间,算法的最大执行时间。缺点:

1)必须编写、执行程序

2)其它因素掩盖算法本质第34

页1.4算法与算法分析影响算法时间效率的因素:算法选用的策略问题的规模编写程序的语言编译程序产生的机器代码的质量计算机运行速度

第35

页1.4算法与算法分析算法分析算法的复杂性与其所求解的问题规模直接有关,因此通常将问题规模n

作为一个参照量,求算法的时间开销与n的关系f(n)。算法的渐近分析就是f(n)的增长趋势。f(n)的函数关系一般较复杂,计算时只考虑可以显著影响函数量级的部分(即:n的幂次最高的项,其他的常数项和低幂次项忽略不计),结果为原函数的一个近似值。这种分析是一种不精确估计,提供对于算法资源开销进行评估的简单化模型。第36

页1.4算法与算法分析:算法的时间复杂度大O表示法 若存在两个正的常数c和n0,对于任意n≥n0,都有T(n)≤c×f(n),则称T(n)=O(f(n))。n0问题规模n执行次数n0之前的情况无关紧要T(n)c×f(n)T(n)为算法的渐近时间复杂度,简称算法时间复杂度。第37

页1.4算法与算法分析:算法的时间复杂度大O表示法的运算规则单位时间简单布尔或算术运算简单I/O函数返回加法规则:f1(n)+f2(n)=O(max(f1(n),f2(n)))顺序结构,if结构,switch结构乘法规则:f1(n)·f2(n)=O(f1(n)·f2(n))for,while,do-while结构第38

页1.4算法与算法分析:算法的时间复杂度算法由控制语句和原操作(预定义数据类型的操作)组成,算法时间取决于两者的综合效果。例:n阶矩阵相乘算法

for(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];}第39

页1.4算法与算法分析:算法的时间复杂度例:n阶矩阵相乘算法

for(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];}T(n)=n+2n2+2n3

T(n)=O(n3)

说明:在计算算法时间复杂度时,可以忽略所有低次幂和最高次幂的系数。第40

页2nn2nlognnLognfn2nn2nlognnlognΟ(1)<Ο(log2n)<Ο(n)<Ο(nlog2n)<Ο(n2)<Ο(n3)<…<Ο(2n)<Ο(n!)第41

页1.4算法与算法分析:算法的时间复杂度例:在一维整型数组A[n]中顺序查找与给定值k相等的元素(假设该数组中有且仅有一个元素值为k)。

intFind(intA[],intn){f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论