收藏 分享(赏)

算法与数据结构第 1 章 概论.ppt

上传人:dreamzhangning 文档编号:3345230 上传时间:2018-10-16 格式:PPT 页数:46 大小:420KB
下载 相关 举报
算法与数据结构第 1 章 概论.ppt_第1页
第1页 / 共46页
算法与数据结构第 1 章 概论.ppt_第2页
第2页 / 共46页
算法与数据结构第 1 章 概论.ppt_第3页
第3页 / 共46页
算法与数据结构第 1 章 概论.ppt_第4页
第4页 / 共46页
算法与数据结构第 1 章 概论.ppt_第5页
第5页 / 共46页
点击查看更多>>
资源描述

1、算法与数据结构,许 亮,2018/10/16,算法与数据结构,课程名称:算法与数据结构 先修课程:C语言程序设计 后续课程:微机原理及应用单片机原理及应用 教材:算法与数据结构-C语言描述 张乃孝编著 参考资料:1、数据结构(C语言版) 严蔚敏 吴伟民 编著2、数据结构题集(C语言版) 严蔚敏 吴伟民 编著 3、数据结构 唐策善等编 4、算法与数据结构 陈守孔等编 教师:电子信息教研室 许亮,2018/10/16,课程成绩的考核,平时(出勤、作业、上课)占50%; 期末考试占50;,2018/10/16,第1章 概论 本章目录,1.1 从问题到程序 1.1.1 问题分析与抽象 1.1.2 程序

2、的设计与实现 1.2 基本概念和术语 1.3 抽象数据类型 1.4 算法 1.4.1 算法 1.4.2 算法的设计 1.4.3 算法的精化 1.4.4 算法的分析,2018/10/16,1.1从问题到程序,当我们使用计算机来解决一个具体问题时,一般需要经过下列几个步骤: 实际 问题提出需求模型 抽象 问题模型 数学模型实现模型 程序 是使用程序设计语言精确描述的实现模型,程序就是在数据的某些特定的结构和表示的基础上对于算法的描述。,2018/10/16,1.1从问题到程序,计算机的用途:微分方程 数值运算 数学模型 代数方程组等非数值运算:数据结构讨论的内容(应用更为广泛),2018/10/1

3、6,1.1从问题到程序,为一个实际问题建立一个正确的求解程序,通常可以分成以下四个阶段: 分析阶段:建立模型(需求或数学模型) 设计阶段:算法和数据结构的设计(实现模型) 编码阶段:编写可执行程序 调试和维护,2018/10/16,1.1.1问题分析与抽象,信号灯问题,考虑一个多叉路口,其C,E为单行线,其余为双行线; 任务:设计一个安全有效的交通信号灯的管理系统,分析: 1、分为13组(可能的行驶方向),每次一组通行,最安全,但效率低。 2、尽可能分组少,这样效率高。,2018/10/16,1.1.1问题分析与抽象,信号灯问题,抽象后: 1、有连线代表有冲突,在不同组里。 2、BA、DC、E

4、D为右转,可以任何时许都通行,也可进行控制,看问题的复杂程度。,交叉路口行驶冲突的模型,可行解 最优解 次优解,2018/10/16,1.1.2程序的设计与实现,一、选择算法: 1、穷举法 2、贪心法,二、选择抽象数据类型 三、算法的描述 四、数据结构的设计 五、算法的精化与代码生成,2018/10/16,例1.1 考生录取信息系统,2018/10/16,考生录取信息系统,计算机处理的对象是表 元素间的关系是线性关系 施加于对象上的操作有查询、插入、删除等,2018/10/16,例1.2 人机博弈,2018/10/16,国际象棋,Deep Blue: 2亿结点/秒,60万种棋局,评价函数有80

5、00个参数; 计算机预见1015步,心理学家认为,人类选手只能预测35步; 棋局中期计算机往后看75步。,2018/10/16,人机博弈,计算机处理的对象是树型结构 元素间的关系是层次关系 施加于对象上的操作有查询、插入、删除等,2018/10/16,例1.3 哥尼斯堡七桥问题,问题: 怎样才能够从某块陆地出发,经过每座桥一次且仅一次最后回到出发点。,2018/10/16,哥尼斯堡七桥问题,计算机处理的对象是图 元素间的关系是复杂的图形或网状关系 施加于对象上的操作有查询、插入、删除等,2018/10/16,数据结构研究的内容,由以上三个例子可见,描述这类非数值计算问题的数学模型不再是数学方程

6、,而是诸如表、树、图之类的数据结构。因此,简单说来,数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作的学科。,2018/10/16,1.2基本概念和术语,数据(Data):客观事物在计算机中的符号表示,是能被计算机识别和处理的符号总称。 数据元素(Data Element):数据的基本单位,用于完整地描述一个对象; (也称为:记录,元素,结点,顶点等) 数据项(Data Item):组成数据元素的有特定意义的最小的不可分割的单位 。,2018/10/16,1.2基本概念和术语,数据的三个层次 数据 数据元素 数据项数据对象(Data Object):具有相同

7、特性的数据元素的集合,是数据的一个子集;,2018/10/16,1.2基本概念和术语,数据结构:相互之间存在一种或多种特定关系的数据元素的集合。 形式定义:数据结构是一个二元组Data_Structure (D,R),其中,D是数据元素的有限集,R是D上关系的有限集。例 复数的数据结构定义如下: Complex=(C,R) 其中:C是含两个实数的集合C1,C2,分别表示复数 的实部和虚部。R=P,P是定义在集合上的一种关系C1,C2。,2018/10/16,1.2基本概念和术语,数据结构:相互之间存在一种或多种特定关系的数据元素的集合。 形式定义:数据结构是一个二元组Data_Structur

8、e (D,R),其中,D是数据元素的有限集,R是D上关系的有限集。 “关系”:描述的是数据元素之间的逻辑关系,因此又称为逻辑结构 。算法的设计取决于选定的逻辑结构。 数据结构在计算机中的表示称为数据的物理结构,又称存储结构。算法的实现依赖于采用的存储结构。,2018/10/16,逻辑结构:数据元素之间的逻辑关系,数据的逻辑结构是本质,可以分为:线性结构和非线性结构, 也可以分为 集合: 线性结构: 树形结构: 图状结构:(复杂结构),2018/10/16,存储结构:数据结构在计算机中的表示。,顺序存储结构: 借助元素在存储器中的相对位置表示数据元素之间的关系。,链式存储结构: 借助指示元素存储

9、地址的指针(Pointer)表示数据元素之间的逻辑关系。,2018/10/16,物理(存储)结构的分类,物理(存储)结构的分类 顺序存储结构:它是把逻辑上相邻的节点存储在物理位置相信的存储单元里,节点的逻辑关系由存储单元的邻接关系来体现。 链式存储结构:它不要求逻辑上相信的节点在物理位置上亦相邻,节点之间的逻辑关系是由附加的指针字段表示的。 索引存储结构:除建立存储节点信息外,还建立附加的索引表来标识节点的地址。 散列存储结构:根据节点的关键字直接计算出该节点的存储地址。,2018/10/16,2018/10/16,1.3抽象数据类型,抽象数据类型:(Abstract Data Type)AD

10、T:一个数学模型以及定义在该模型上的一组操作。抽象数据类型的定义取决于它的一组逻辑特性,而与其在计算机内部如何表示和实现无关。即不论其内部结构如何变化,只要它的数学特性不变,都不影响其外部的使用。,2018/10/16,1.3抽象数据类型,抽象数据类型的定义: ADT 抽象数据类型名数据对象:数据对象定义数据关系:数据关系定义基本操作:基本操作定义 ADT 抽象数据类型名 基本操作的定义格式为:基本操作名(参数表)初始条件:初始条件描述操作结果:操作结果描述,2018/10/16,算法与数据结构关系密切选择的数据结构是否恰当直接影响算法的效率;而数据结构的优劣由算法的执行来体现。N.Wirth

11、Algorithms+Data Structures=Programs,1.4算法,2018/10/16,1.4算法,算法(Algorithm):是对特定问题求解步骤的一种描述,是指令的有限序列。其中每一条指令表示一个或多个操作。一个算法应该具有下列特性:,有穷性:执行有限步,每步有限的时间。 确定性:每条指令有确切含义,相同输入只能得到相同输出。 可行性:操作通过已实现的基本运算执行有限次来实现。 输入:零个至多个输入。 输出:一个至多个输出。,1.4.1算法(Algorithm),2018/10/16,1.4.2算法的设计,算法设计的方法: 贪心法 分治法 回溯法 动态规划法 分枝界限法,

12、2018/10/16,算法设计的要求: 正确性(correctness):1、不含语法错误2、对于几组输入数据能够得出满足规格说明要求的结果3、对于精心选择的典型、苛刻而带有刁难性的数据能够得出满足规格说明要求的结果4、对于一切合法的输入数据都能产生满足规格说明要求的结果 可读性(readability):人的阅读与交流 健壮性(robustness):当输入非法数据时,算法能够适当的做出反应或进行处理,不会产生莫名其妙的结果 效率与低存储量:算法的执行时间和所需的最大存储空间,1.4.2算法的设计,2018/10/16,排序问题 初始条件:n个待排序的数a0an-1 结果:排序后a0an-1

13、从小到大排列算法思想:直接选择排序1)从a中选出一个最大的整数放到一个空的数组a中,作为a中的第一个元素。2)从a中剩下的元素中再选出最大的整数放到a中,接在前一个已放入元素的后面。反复执行步骤2),直到a中所有的整数都放到排好序的数组a中。,1.4.3算法的精化,2018/10/16,排序问题 第一步精化:1)i从n-1直到i=2做(2)(3)步2)j从0直到j=i-1做(3)3)若ajaj+1则交换它们4)算法结束 Void sortIntArray(int a,int n)for(i=n-1;iaj)t=ak;ak=aj;aj=t;/sortIntArray,1.4.3算法的精化,201

14、8/10/16,排序问题 第二步精化:1)置标记change=TRUE;2)i从n-1直到i=2做(3)(6)步3)change=FALSE;4)j从0直到j=i-1做(5)5)若ajaj+1则交换它们并置change=TRUE;6)若change=FALSE则结束7)算法结束,1.4.3算法的精化,2018/10/16,算法效率的度量(时间复杂度和空间复杂度),衡量算法效率的方法主要有两大类: 事后统计:利用计算机的时钟; (不可取) 事前分析估算:用高级语言编写的程序运行的时间主要取决于如下因素: 算法选用的策略; 问题规模; 使用语言:级别越高,效率越低; 编译程序; 机器执行指令的速度

15、;,1.4.4算法的分析,2018/10/16,时间复杂度,算法的运行工作量的大小就只依赖于问题的规模(通常用正整数n表示),或者说它是问题规模n的函数。记T(n),称为该算法的时间复杂度算法主要由程序的控制结构(顺序,分支,循环)和原操作(必需的操作)构成,算法的时间主要取决于两者。度量算法运行时间: “原操作”的执行次数,2018/10/16,+x; s=0; 语句频度为1,时间复杂度为O(1)。,时间复杂度-举例常量阶O(1),for(j=1;j=10000;+j)+x; s+=x; 语句频度为10000,时间复杂度为O(1)。,2018/10/16,时间复杂度-举例对数阶O(logn)

16、,s=0; for(j=1; j=n; j*=2)s+;语句频度为log2n,所以时间复杂度为O(log2n)。,2018/10/16,时间复杂度-举例线性阶O(n),S=0; for(j=1;j=n;+j)s+; 语句频度为n,所以时间复杂度为O(n)。,2018/10/16,时间复杂度-举例对数阶O(nlogn),s=0; for(j=1;j=n;j*=2)for(k=1;k=n;+k)s+; 时间复杂度为O(nlog2n),2018/10/16,时间复杂度-举例平方阶O(n2),S=0; for(j=1;j=n;+j)for(k=1;k=n;+k)s+; 语句频度为n2,所以时间复杂度为

17、O(n2)。,s=0; for(j=1; j=n; j+)for(k=1;k=j;+k)s+; 语句频度为n(n+1)/2,所以时间复杂度仍为O(n2)。,2018/10/16,时间复杂度-举例立方阶O(n3),例:矩阵乘法:n x nfor( i = 0; i n; i+) /(n+1)for( j = 0; j n; j+) /n(n+1) cij = 0; /n2for( k= 0; k n; j+) / n2(n+1)cij = cij+aik* bkj; / n3说明:各语句行后的数字是该语句重复执行的次数;本算法时间复杂度为O ( n 3),2018/10/16,时间复杂度最坏时间复杂度,for( i = n, change = TRUE; i 0 最佳情况:最差情况:平均情况时间复杂度(最坏情况下的时间复杂度),2018/10/16,常见的时间复杂度及其关系,2018/10/16,算法的空间复杂度,算法的空间复杂度算法的空间复杂度是指解决问题的算法在执行时所占用的存储空间。空间复杂度的度量分为两个部分:固定部分和可变部分。若所用额外存储空间相对于输入数据量来说是常数,则称此算法为原地(就地)工作。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报