计算机软件34算法和计算机软件理论基础.ppt
《计算机软件34算法和计算机软件理论基础.ppt》由会员分享,可在线阅读,更多相关《计算机软件34算法和计算机软件理论基础.ppt(51页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三章第三章 计算机软件计算机软件3.4 3.4 算法和计算机软件理论基础算法和计算机软件理论基础3.1 3.1 计算机软件及计算机软件技术计算机软件及计算机软件技术3.2 3.2 操作系统操作系统3.3 3.3 程序设计语言及语言处理程序程序设计语言及语言处理程序3.4 算法和数据结构算法和数据结构3.4.1 3.4.1 算法算法3.4.2 3.4.2 数据结构数据结构算法算法与程序与程序软件的主体是程序,程序的核心是算法软件的主体是程序,程序的核心是算法要要使使计计算算机机解解决决某某个个问问题题,首首先先针针对对问问题题设设计计一一个个解解题题步步骤骤,然然后后在在根根据据解解题题步步骤
2、骤编编写写程程序序并并交交给给计计算算机执行。机执行。这个这个“解题步骤解题步骤”就是算法。就是算法。算法算法与程序与程序算法(算法(AlgorithmAlgorithm):):问题求解规则的一种过程描述。问题求解规则的一种过程描述。在在算算法法中中要要精精确确定定义义一一系系列列规规则则,这这些些规规则则指指定定了了相相应应的的操操作作顺顺序序,目标是在有限的步骤内得到所求问题的解答。目标是在有限的步骤内得到所求问题的解答。算法设计方法:由粗到细,由抽象到具体的逐步求精方法算法设计方法:由粗到细,由抽象到具体的逐步求精方法程序:对解题对象和解题步骤用程序语言进行的一种描述。程序:对解题对象和
3、解题步骤用程序语言进行的一种描述。程序中用具有一定结构的变量来表示程序中用具有一定结构的变量来表示问题的对象问题的对象用函数和语句来实现用函数和语句来实现解题的操作解题的操作“算算法法”和和“数数据据结结构构”是是编编写写程程序序所所要要首首先先考考虑虑的的两两个个重要方面。重要方面。3.4.1 算法算法算法就是解决问题的方法与步骤算法就是解决问题的方法与步骤计算机计算机求解问题的步骤求解问题的步骤(1)确定并理解问题;确定并理解问题;(2)寻找解决问题的方法与步骤,并将其表示成寻找解决问题的方法与步骤,并将其表示成算法算法(Algorithm);(3)使用某种程序设计语言描述该算法使用某种程
4、序设计语言描述该算法(编程编程),并进行调并进行调试;试;(4)运行程序,获得问题的解答;运行程序,获得问题的解答;(5)进行评估,改进算法和程序进行评估,改进算法和程序算法是解决问题的方法与步骤算法是解决问题的方法与步骤例:有三个硬币,其中一个是伪造的,另例:有三个硬币,其中一个是伪造的,另两个是真的,伪币与真币重量略有不两个是真的,伪币与真币重量略有不同。现在提供一座天平,同。现在提供一座天平,如何如何找出伪找出伪币呢?币呢?分析:分析:方法明确而有序方法明确而有序按提供的条件进行操作按提供的条件进行操作任何人均可仿照进行任何人均可仿照进行(共享智能共享智能)开始开始C是伪币是伪币B是伪币
5、是伪币A是伪币是伪币AB?AC?是是否否否否是是关于算法的三方面问题关于算法的三方面问题如何确定算法(算法设计)?如何确定算法(算法设计)?如何表示算法(算法表示)?如何表示算法(算法表示)?如何使算法更有效(算法分析)?如何使算法更有效(算法分析)?2.算法设计举例算法设计举例例如,要对包含例如,要对包含n个整数元素的数组个整数元素的数组A按元素值由小到大排序。按元素值由小到大排序。第第1遍,给出粗略的思路:遍,给出粗略的思路:从所有整数中选一个最小的,作为已排好序的第一个数;从所有整数中选一个最小的,作为已排好序的第一个数;在在剩剩下下的的未未排排序序整整数数中中选选出出最最小小的的,放放
6、在在已已排排好好序序列列的的最最后一个数后面;后一个数后面;反复执行反复执行,直到所有整数都放到已排好的序列中。,直到所有整数都放到已排好的序列中。第第2遍遍,细细化化,考考虑虑“序序列列存存放放在在何何处处”,如如何何“反反复复执执行行”等。用等。用“伪代码伪代码”描述为:描述为:for i=1 to n选出选出Ai到到An中最小的元素,设为中最小的元素,设为Aj;交换交换Ai和和j;筛选法排序 2 1 3 4 6 2 1 3 4 6不不交换交换交换交换 3 1 2 4 6 4 1 2 3 6交换交换交换交换 6 1 2 3 4 6 1 2 3 4交换交换 6 2 1 3 4交换交换交换交换
7、 6 3 1 2 4 6 4 1 2 3 6 4 1 2 3交换交换 6 4 2 1 3 6 4 3 1 2交换交换 6 4 3 1 2交换交换 6 4 3 2 1第一轮比较第一轮比较第二轮比较第二轮比较第三轮比较第三轮比较第四轮比较第四轮比较筛选法排序例:筛选法排序。(设从大到小排序)例:筛选法排序。(设从大到小排序)分析分析:将:将N个无序数据存放在个无序数据存放在 数组中,对数组进行数组中,对数组进行N-1轮扫视。轮扫视。第一轮扫视第一轮扫视:将:将A(1)与与A(2)比较,若比较,若A(1)A(2),),则交则交换换A(1)和和A(2)的值;再将的值;再将A(1)与与A(3)、)、A(
8、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 1For I=1 To
9、N 1Next INext I1.确定排序需要几轮的比较确定排序需要几轮的比较2.进行每一轮的比较进行每一轮的比较 For J=For J=To To Next JNext J1.确定排序需要几轮的比较确定排序需要几轮的比较2.进行每一轮的比较进行每一轮的比较3.在每一轮比较中,比较两在每一轮比较中,比较两 个数的大小,根据比较结个数的大小,根据比较结 果决定是否交换两个数果决定是否交换两个数If A(I)A(J)thenIf A(I)A(J)then T=A(T=A(I)A(I)=A(J)A(J)=TEnd IfEnd IfI I+1 1 N NText1=Text1&Text1=Text1
10、&StrStr(A(I)(A(I)Text1=Text1&Text1=Text1&StrStr(A(N)(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)*Rnd)+1 Text1=Text1&Str(A(I)Next IEnd Sub返回返回算法设计举例算法设计举例第第3
11、遍,遍,具体给出如何选最小的元素,交换元素等,整合算法。具体给出如何选最小的元素,交换元素等,整合算法。第第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(AkN时,有时,有T(n)Cf(n)。空空间间复复杂杂度度:若若存存在在常常数数C和和N,当当问问题题规规模模nN时时,有有S(n)Cg(n),则称该算法的空间代价(空间复杂度则称该算法的空间代价(空间复杂度)为)为O(g(n)
12、。算法分析算法分析从从数数学学上上看看,若若按按数数量量级级递递增增对对算算法法分分析析中中常常见见的的时时间间代代价价排排列列,则则它它们们依依次次为为常常数数阶阶O(1),对对数数阶阶O(log2n),线线性性阶阶O(n),线线性性对对数数阶阶O(nlog2n),平平方方阶阶O(n2),立立方方阶阶(n3)K次次方方阶阶O(nK),指指数数阶阶O(2n)等等。时时间间代代价价为为指指数数阶阶O(2n)的的算算法法,其其效效率率极极低低,当当n值值稍稍大大时时,这这样样的的算算法法就就无无法法应用了应用了。算法的选择算法的选择使用次数较少的程序,应力求算法简明易读使用次数较少的程序,应力求算
13、法简明易读反复运行多次的程序,应尽可能选用快速的算法反复运行多次的程序,应尽可能选用快速的算法待待解解决决问问题题的的数数据据量量较较大大,算算法法设设计计时时应应主主要要考考虑虑如如何何节节省存储空间省存储空间算法设计方法算法设计方法 设计设计算法是有方法可循算法是有方法可循的。的。常常用用的的算算法法设设计计方方法法:迭迭代代法法、穷穷举举搜搜索索法法、递递推推法法、递递归归技技术术、分分治治法法、回溯法、回溯法、贪贪婪法和婪法和动态规动态规划法等。划法等。递归递归:算法算法实施过程中直接或间接地使用了实施过程中直接或间接地使用了算法本身算法本身。例如,例如,阶阶乘乘函数函数f f的的递归
14、递归定定义为义为:f(f(intint n)if(n=1)return 1;else return n*f(n-1);n)if(n=1)return 1;else return n*f(n-1);定定义阶义阶乘乘f f的迭代算法的迭代算法为为:f=1;i=1;f=1;i=1;while(i while(i n)n)f=f*i;i=i+1;f=f*i;i=i+1;return f;return f;递递归归本本质质上上是是一一种种循循环环结结构构,它它把把“较较复复杂杂”的的计计算算逐逐次次归归结结为为“较较简简单单”的的计计算,一直算,一直归结归结到到“最最简单简单”的的计计算,并得到算,并得
15、到计计算算结结果果为为止。止。算法设计方法算法设计方法 Private Sub Form_Click()Private Sub Form_Click()Dim Fact As Long,I As Integer,N As Integer Dim Fact As Long,I As Integer,N As Integer N=N=InputBoxInputBox(输入输入N)N)Fact=1 Fact=1 For I=1 To N For I=1 To N Fact=Fact*I Fact=Fact*I Next I Next I Print N;!=;Fact Print N;!=;Fact
16、End SubEnd Sub算法设计方法算法设计方法 Private Sub Command1_Click()Private Sub Command1_Click()Dim N As Integer Dim N As Integer N=N=InputBoxInputBox(输入输入N)N)Print Fact(N)Print Fact(N)End SubEnd SubPrivate Function Fact(N As Integer)As LongPrivate Function Fact(N As Integer)As Long Dim I As Integer Dim I As Int
17、eger If N=1 Then If N=1 Then Fact=1 Fact=1 Else Else Fact=N*Fact(N-1)Fact=N*Fact(N-1)End If End IfEnd FunctionEnd Function3.4.2 数据结构数据结构数据结构数据结构(Data Structures):):确确定定算算法法所所处处理理的的对对象象以以及及对对象象之之间间的的相相互互关关系系,并并将将它它们们以以计计算算机机的的数数据据的的形形式式进进行行表表示示,这这就就是是“数数据据结结构构”。研研究究如如何何在在计计算算机机中中表表示示被被处处理理的的对对象象及及对对象
18、象之之间间的的关关系系和运算和运算,即如何组织数据。,即如何组织数据。主要研究内容:主要研究内容:数据的逻辑结构数据的逻辑结构数据的存储结构数据的存储结构在数据结构上定义的运算的集合在数据结构上定义的运算的集合数据的逻辑结构数据的逻辑结构 数数据据的的逻逻辑辑结结构构是是数数据据间间关关系系的的描描述述;即即数数据据结结构构中中包包括括哪些元素,相互之间有什么关系等。哪些元素,相互之间有什么关系等。数数据据的的逻逻辑辑结结构构它它只只抽抽象象地地反反映映数数据据元元素素间间的的逻逻辑辑关关系系,而不管其在计算机中的存储方式。而不管其在计算机中的存储方式。例如:例如:线性结构线性结构网状结构网状
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机软件 34 算法 理论基础
限制150内