算法程序与编程课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《算法程序与编程课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 程序 编程 课件
- 资源描述:
-
1、第四章 算法、程序与编程a 问题的提出:人是如何来解决问题的?人是如何解决复杂问题的?计算机如何来解决问题的?问题的解决计算机算法、程序与编程a第四章 算法、程序与编程 学习目的和要求:了解算法与程序概念 理解算法的复杂性与NP问题 熟悉基本算法 知道数据和数据结构 熟悉高级语言 掌握程序设计规划 了解程序理论和软件工程 a一种逐步解决问题或完成任务的方法一种逐步解决问题或完成任务的方法输入列表输入列表输出列表输出列表算法算法a寻找最大值的一个算法(1)输入5个数,输出其中的最大值1.输入:算法接受一组5个整数的数据。2.过程第一步第一步 检查第一个整数,把这个整数赋给变量Largest第二步
2、第二步 把第二个数与Largest中的数进行比较,如大于Largest中的数就将该数赋予它,否则,Largest中的数不变第三步第三步 把第三个数与Largest中的数进行比较,如大于Largest中的数就将该数赋予它,否则,Largest中的数不变。此时13大于12,所以,变量Largest中变为13。a寻找最大值的一个算法(2)第四步第四步 把第四个数与Largest中的数进行比较,如大于Largest中的数就将该数赋予它,否则,Largest中的数不变。此时第四个数是9,小于13,所以Largest中的数不变。第五步第五步 把第四五个数与Largest中的数进行比较,如大于Largest
3、中的数就将该数赋予它,否则,Largest中的数不变。此时第五个数是11,小于13,所以Largest中的数不变。3.输出 最大值13 结束a算法的例子示意图a算法的精化a算法的泛化a三三 种种 结结 构构a 算法的基本结构算法的基本结构 a流程图aa 伪代码:是在编写算法时,为了更好地表示算法本身,不在一些小的细节上纠缠,而采用类似于英语(或其他自然语言)表示算法的算法表示方法。a伪代码a用伪代码写出一个求两个数的平均值的算法AverageOfTwoInput:Two numbers1.Add the two numbers2.Divide the result by 23.Return t
4、he result by step 24.EndaPass/NoPassGradeInput:One number1.if(the number is greater than or equal to 60)then 1.1 Set the grade to“pass”else 1.2 Set the grade to“nopass”End if2.Return the grade3.End 用伪代码写出一个可以把不同数值成绩分成及格或不及格的算法aLetterGradeInput:One number1.if(the number is between 90 and 100,inclusiv
5、e)then 1.1 Set the grade to“A”End if2.if(the number is between 80 and 89,inclusive)then 2.1 Set the grade to“B”End if 用伪代码写出一个可以把数字型成绩变成字母等级成绩的算法aContinues on the next slide3.if(the number is between 70 and 79,inclusive)then 3.1 Set the grade to“C”End if4.if(the number is between 60 and 69,inclusive
6、)then 4.1 Set the grade to“D”End ifa算法的定义 算法定义1:算法是一组明确步骤的有序集合,它产生结果,并在有限的时间内终止。有序集合 明确步骤 产生结果 在有限的时间内结束a 算法定义算法定义2 2:(1)给定问题和设备,一个算法是用该设备可理解的语言表示的,解决这个问题的一种方法是精确刻画。特别地,算法具有以下特征属性:算法应用于一个具体的输入集合或问题描述将在有穷步动作之后得到结果;该序列有一个唯一的初始动作:该序列中的每一个动作有一个唯一的后继动作 该序列终止时或者得到这个问题的解,或者因该问题不可解而获得不可解说明。a 算法定义算法定义3 3:一个算
7、法,就是一个有穷规则的集合,其中之规则确定了一个解决某一特定型问题的运算序列。此外,算法的规则序列必须满足以下5个重要条件,即具有以下五个特性:(1)有穷性。算法必须总是在执行有穷步之后结束(2)确定性。算法的每一个步骤必须是确切地定义的;(3)输入。算法有零个或多个输入(4)输出。算法有一个或多个输出,即与输入有某个关系的量。(5)能行性。算法中有待执行的运算和操作必须是相当基本的,即是说,它们原则上是能够精确地进行的,而且用笔和纸做有穷次就可以完成。aa 计算的复杂性(算法的复杂性)的概念计算的复杂性(算法的复杂性)的概念 计算空间的复杂性 计算时间的复杂性 相似性与对偶原理:计算空间与计
8、算时间的互换性 算法复杂性的描述算法复杂性的描述:算法在执行过程中总共所需要的初等运算的步数来表示算法用于求解任一问题的某一例子时所需的时间。a计算的复杂性与NP问题(2)算法复杂性的表示 多项式时间算法:是指存在某个以输入长度n为变量的多项式函数中(n),使其时间复杂性函数为O(p(n)的算法。因此复杂性为O(n)、O(106n3)、O(5n8)等算法均为多项式时间算法。指数时间算法:是指任何其时间复杂性函数不可能如上用多项式函数去界定的算法,例如O(2n)、O(n!)、O(nn)、O(2n2)等都在算法上是不可接受的。a计算的复杂性与NP问题(3)时间复杂性的表示 O(1)称为常数级;O(
9、logn)称为对数级;O(n)称为线性级;O(nc)称为多项式级,(C为常数);O(Cn)称为指数级,(C为常数);O(n!)称为阶乘级;a计算的复杂性与NP问题(4)P P类与类与NPNP类问题:类问题:一个算法如果存在图灵机可计算的多项式时间计算复杂性算法,就将该算法归入P类;如果存在非确定性图灵机可计算的多项式时间计算复杂性算法,就将其归入NP类。P=NP?a结构图 结构图:是程序员使用的高层设计工具。结构图能很好地表示程序设计者的逻辑思维的过程;把算法中各个模块之间的关系表示的更加清楚。结构图的常用图标:结构图的常用图标:aa 递归、迭代算法:递归算法是算法自我调用的过程。迭代的定义:
10、算法中没有包含算法自身,只是 利用上一步计算的结果得出最后答案的算法 递归的定义:算法中包含了算法自身的调用的 算法。分治算法:就是将一个难以直接解决的大问题,通过分析,分解为一些规模较小的相同问题,进而对各个小问题进行解决,最后达到整个问题的解决。a迭代算法的例子a递归算法的例子a递归算法中递归调用示意图aFactorialInput:A positive integer num1.Set FactN to 02.Set i to I3.while(i is less than or equal to num)3.1 Set FactN to FactN x I 3.2 Increment
展开阅读全文