计算机软件34算法和计算机软件理论基础.ppt
《计算机软件34算法和计算机软件理论基础.ppt》由会员分享,可在线阅读,更多相关《计算机软件34算法和计算机软件理论基础.ppt(51页珍藏版)》请在三一办公上搜索。
1、第三章 计算机软件,3.4 算法和数据结构,算法与程序,软件的主体是程序,程序的核心是算法要使计算机解决某个问题,首先针对问题设计一个解题步骤,然后在根据解题步骤编写程序并交给计算机执行。这个“解题步骤”就是算法。,算法与程序,算法(Algorithm):问题求解规则的一种过程描述。在算法中要精确定义一系列规则,这些规则指定了相应的操作顺序,目标是在有限的步骤内得到所求问题的解答。算法设计方法:由粗到细,由抽象到具体的逐步求精方法程序:对解题对象和解题步骤用程序语言进行的一种描述。程序中用具有一定结构的变量来表示问题的对象用函数和语句来实现解题的操作“算法”和“数据结构”是编写程序所要首先考虑
2、的两个重要方面。,3.4.1 算法,算法就是解决问题的方法与步骤,计算机求解问题的步骤,(1)确定并理解问题;(2)寻找解决问题的方法与步骤,并将其表示成算法(Algorithm);(3)使用某种程序设计语言描述该算法(编程),并进行调试;(4)运行程序,获得问题的解答;(5)进行评估,改进算法和程序,算法是解决问题的方法与步骤,例:有三个硬币,其中一个是伪造的,另两个是真的,伪币与真币重量略有不同。现在提供一座天平,如何找出伪币呢?分析:方法明确而有序按提供的条件进行操作任何人均可仿照进行(共享智能),关于算法的三方面问题,如何确定算法(算法设计)?如何表示算法(算法表示)?如何使算法更有效
3、(算法分析)?,2.算法设计举例,例如,要对包含n个整数元素的数组A按元素值由小到大排序。第1遍,给出粗略的思路:从所有整数中选一个最小的,作为已排好序的第一个数;在剩下的未排序整数中选出最小的,放在已排好序列的最后一个数后面;反复执行,直到所有整数都放到已排好的序列中。第2遍,细化,考虑“序列存放在何处”,如何“反复执行”等。用“伪代码”描述为:for i=1 to n选出Ai到An中最小的元素,设为Aj;交换Ai和j;,筛选法排序,第一轮比较,第二轮比较,第三轮比较,第四轮比较,筛选法排序,例:筛选法排序。(设从大到小排序)分析:将N个无序数据存放在 数组中,对数组进行N-1轮扫视。第一轮
4、扫视:将A(1)与A(2)比较,若A(1)A(2),则交换A(1)和A(2)的值;再将A(1)与A(3)、A(4)A(N)依次按以上规则比较和交换,第一轮扫视完毕,N个数中最大数存放到A(1)中。第二轮扫视:将A(2)与A(3)、A(4)A(N)依次按以上规则比较;第三轮扫视:将A(3)与A(4)、A(5)A(N)依次按以上规则比较;这样N-1轮扫视下来排序完成。,筛选法排序,假定待排序的N个数已存放在数组 A 中,1.确定排序需要几轮的比较,For I=1 To N 1Next I,1.确定排序需要几轮的比较2.进行每一轮的比较,For J=To Next J,1.确定排序需要几轮的比较2.
5、进行每一轮的比较3.在每一轮比较中,比较两 个数的大小,根据比较结 果决定是否交换两个数,If A(I)A(J)then T=A(I)A(I)=A(J)A(J)=TEnd If,I+1,N,Text1=Text1&Str(A(I),Text1=Text1&Str(A(N),筛选法排序,假定数据已放入A数组中,I,J,T变量均为整型变量Option ExplicitOption Base 1Dim A(10)As IntegerPrivate Sub Cmd数据准备_Click()Dim I As Integer Randomize For I=1 To 10 A(I)=Int(100-9)*R
6、nd)+1 Text1=Text1&Str(A(I)Next IEnd Sub,返回,算法设计举例,第3遍,具体给出如何选最小的元素,交换元素等,整合算法。第4遍,选择程序语言编程,如用C语言编写的函数模块sort如下:,void sort(int A,int n)int i,min,t;for(i=0;in-1;i+)min=i;for(k=i+1;kn;k+)if(AkAmin)min=k;t=Ai;Ai=Amin;Amin=t;,算法,什么是算法,在计算机学科中,算法指的是用于完成某个信 息处理任务的一组有序而明确的、可以由计算机执行的操作(或指令),它能在有限时间内执行结束并产生结果。
7、这里所说的操作(指令),必须是计算机可以执行的而且是十分明确的(什么样的输入一定得到什么样的输出)。计算机算法是一个有终结的过程,它必须在有限步瑕内得到所 求问题的解答。,算法体现了解决问题所需的智能。是一种将智能与他人共享的途径,算法的基本性质,确定性:算法中的每一步运算必须有确切的定义,无二义性。有穷性:(可终结性)一个算法总是在执行了有穷步运算后终止能行性:算法中有待实现的运算都是基本的、能精确进行的,且能在有限的时间内完成。输入:具有0个或多个输入量。输出:至少产生一个输出(包括参量状态的变化),算法的一个显著的特点:它是解决的是一类问题而不是解决一个特定的问题。,算法与程序的区别,终
8、止性区别:一个程序不一定满足有穷性。例如一个操作系统程序。能行性区别:程序中的指令必须是具体机器可执行的,所有细节必须精确描述;对算法中的运算语句无此限制。可略过可实现的细节,采用“伪代码”、流程图等方式来描述算法。,虽然算法与计算机程序密切相关,但二者也存在区别:计算机程序是算法的一个实例,是将算法通过某种计算机语言表达出来的具体形式;同一个算法可以用任何一种计算机语言来表达。,3.算法的表示,算法的表示方法,文字说明流程图表示用N-S盒图表示算法用PAD图描述算法伪代码(一种介于自然语言和程序设计语言之间的文字和符号表达工具),自然语言描述,“比较与的重量,若,则是伪造的;否则再比较与的重
9、量,若,则是伪造的;否则是伪造的。”缺点:容易产生歧义,很难“精确”地进行表达叙述冗长,很难清楚地表达算法的逻辑流程,算法的流程图表示,流程图由结点和有向边构成,它描述了算法所执行操作的顺序及执行操作的条件流程图符号:,比文字描述简明,但当算法比较复杂时,理解困难,容易产生错误,求最大公约数的伪代码表示,算法3:辗转相除法求最大公约数BEGIN input m,n;/*输入正整数m和n*/do rm mod n;m n;n r;while r0;print m;/*输出最大公约数*/END,4.算法的分析,算法分析的基本内容,正确性:给定有效输入后,经过有限时间的计算,产生正确的输出结果简单性
10、 算法是否容易理解,是否容易验证其正确性,程序是否容易调试简单的算法效率不一定高,要在保证一定效率的前提下力求算法简两个度量特性执行算法所要占用的计算机资源的多少,主要有时间复杂度和空间复杂度两个方面。时间复杂性(Time Complexity):当问题的规模n充分大时,运行该算法所需要的时间的数量级表示 T(n)空间复杂性(Space Complexity):除原始数据之外,额外占用的存储空间的大小g(n),算法分析,对一个正确的算法,分析其好坏时,应考虑以下因素:算法是否易理解,是否易调试和易测试等执行算法所要占用的计算机资源的多少,主要有时间复杂度和空间复杂度两个方面。两个度量特性 当问
11、题的规模以某种单位由1增至n时时间代价:解决该问题的算法运行所耗费的时间,以某种单位由T(1)增至T(n),则称该算法的时间代价为T(n)。T(n)表示的是,当问题的规模n充分大时,运行该算法程序所需时间的数量级表示空间代价:解决该问题的算法实现时所占用存储空间也以某种单位由g(1)增至g(n),则称该算法的空间代价为g(n)。,选择排序算法的时间复杂性,假设参加排序的整数有n个(1)比较操作的次数:在第i趟排序中选出最小整数时,需做n-i次比较操作,因此,总的比较操作次数为:n(n-1)/2=(n2-n)/2(2)移动操作的次数:最好情况(原始数据已经排序)时,移动次数为0最坏情况(原始数据
12、逆序排列)时,每趟均要执行交换操作(3次传送),总的移动次数取最大值为:3(n-1)所以,直接选择排序的时间复杂性 为 O(n2),设置i的初值为1,循环执行下列操作,直到I=n:确定Ai 到An中最小的整数元素的位置,设为j;交换Ai和j;i=i+1,算法分析,时间复杂度只是对执行算法所需占用的计算机时间资源的预测,类似地,空间复杂度是对算法所需空间资源的预测。算法分析时,通常把整个程序中重复执行基本运算的次数之和作为该程序的运行时间特性,记为T(n)实际时间代价是依据算法编制为程序后在计算机中运行时所耗费的时间大小来确定的。,算法分析,算法分析结果的上界比具体的表达式更有意义。因此,常用“
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机软件 34 算法 理论基础
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6343003.html