程序设计算法概述.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《程序设计算法概述.ppt》由会员分享,可在线阅读,更多相关《程序设计算法概述.ppt(85页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、算法概述算法概述算法概述算法概述杨秋妹杨秋妹杨秋妹杨秋妹程序程序=数据结构数据结构+算法算法乘汽车旅行的人总希望找出到目的地的乘汽车旅行的人总希望找出到目的地的尽可能的短的行程。如果有一张地图并尽可能的短的行程。如果有一张地图并在图上标出每对十字路口之间的距离,在图上标出每对十字路口之间的距离,如何找出这一最短行程?如何找出这一最短行程?建立解题模型建立解题模型数据结构数据结构解决方法解决方法什么是算法什么是算法算算法法是是一一个个有有穷穷的的解解决决问问题题的的指指令令序序列列。每每条条指指令令都都必必须须有有清清楚楚的的含含义义并并且且在在有有穷长的时间内用有穷的动作完成。穷长的时间内用有
2、穷的动作完成。一个算法无论接受任何输入,都必须在一个算法无论接受任何输入,都必须在有穷步内停止。有穷步内停止。排序问题排序问题输入:由输入:由n个数构成的一个序列个数构成的一个序列输出:对输入序列的一个排列(重排)输出:对输入序列的一个排列(重排),使得,使得a1=a2=an算法:插入排序,冒泡排序,快速排序,算法:插入排序,冒泡排序,快速排序,合并排序等合并排序等算法的几个特性算法的几个特性算法是指解决问题的一种方法或一个过程。算法是指解决问题的一种方法或一个过程。满足性质:满足性质:(1)输入:有零个或多个外部提供的量作为算法的输入。输入:有零个或多个外部提供的量作为算法的输入。(2)输出
3、:算法产生至少一个量作为输出。输出:算法产生至少一个量作为输出。(3)确定性:组成算法的每条指令是清晰,无歧义的。确定性:组成算法的每条指令是清晰,无歧义的。(4)有限性:算法中每条指令的执行次数是有限的,执有限性:算法中每条指令的执行次数是有限的,执行每条指令的时间也是有限的。行每条指令的时间也是有限的。什么是程序什么是程序程序是算法用某种程序设计语言的具体程序是算法用某种程序设计语言的具体实现实现程序可以不满足算法的有穷性程序可以不满足算法的有穷性算法的描述算法的描述自然语言;自然语言;程序设计语言;程序设计语言;类程序语言类程序语言常用的算法设计方法常用的算法设计方法递归法(递归法(Re
4、cursion)分治法分治法(Divide-and Conquer)、贪心法贪心法(Greedy)动态规划动态规划(Dynamic Programming)、回溯(回溯(Backtracking)分支限界法(分支限界法(Branch and Bound)近似算法近似算法(Approximation)算法的设计目标算法的设计目标算法应易于理解、编程和调试算法应易于理解、编程和调试算法应尽可能有效地利用计算机的资源,算法应尽可能有效地利用计算机的资源,特别地,应尽可能快地运行特别地,应尽可能快地运行好算法的判断标准好算法的判断标准1.正确性正确性2.健壮性健壮性3.时间复杂性时间复杂性4.空间复杂
5、性空间复杂性5.可读性可读性6.灵活性(灵活性(Flexibility)、可重用性)、可重用性(Reuseabale)等等算法复杂度分析算法复杂度分析算法复杂度分析算法复杂度分析算法复杂性算法复杂性体现在运行该算法所需要的计算机资源体现在运行该算法所需要的计算机资源多少上多少上所需资源越多,该算法的复杂性越高所需资源越多,该算法的复杂性越高所需资源越少,该算法的复杂性越低所需资源越少,该算法的复杂性越低时间复杂性:算法执行需要的时间资源时间复杂性:算法执行需要的时间资源空间复杂性:算法执行需要的空间资源空间复杂性:算法执行需要的空间资源百鸡问题百鸡问题公元公元5世纪末世纪末,我国古代数学家张丘
6、建在我国古代数学家张丘建在他所撰写的他所撰写的算经算经中,提出了这样的中,提出了这样的一个问题:一个问题:“鸡翁一,值钱五;鸡母一,鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?问鸡翁、母、雏各几何?”a:公鸡数:公鸡数 b:母鸡数:母鸡数 c:小鸡数:小鸡数a+b+c=1005a+3b+c/3=100c%3=0void chicken_question(int n,int&k,int g,int m,int s)int a,b,c;k=0;for(a=0;a=n;a+)for(b=0;b=n;b+)for(c=0;c=n
7、;c+)if(a+b+c=n)&(5*a+3*b+c/3=n)&(c%3=0)gk=a;mk=b;sk=c;k+;算法有三重循环算法有三重循环内循环体的执行次数为内循环体的执行次数为(n+1)(n+1)(n+1)void chicken_problem(int n,int&k,int g,int m,int s)int i,j,a,b,c;k=0;i=n/5;j=n/3;for(a=0;a=i;a+)for(b=0;b=j;b+)c=n-a-b;if(5*a+3*b+c/3=n)&(c%3=0)gk=a;mk=b;sk=c;k+;算法有两重循环算法有两重循环内循环体执行次数为内循环体执行次数为
8、(n/5+1)(n/3+1)货郎担问题货郎担问题货郎担问题是一个经典问题。某售货员货郎担问题是一个经典问题。某售货员要到若干个城市销售货物,已知各城市要到若干个城市销售货物,已知各城市之间的距离,要求售货员选择出发的城之间的距离,要求售货员选择出发的城市及旅行路线,使每一个城市仅经过一市及旅行路线,使每一个城市仅经过一次,最后回到原出发城市,而总路程最次,最后回到原出发城市,而总路程最短。短。用图的顶点代表城市,边的权重表示城用图的顶点代表城市,边的权重表示城市间的距离,这个问题可以转化为求一市间的距离,这个问题可以转化为求一个图的最短哈密顿回路个图的最短哈密顿回路哈密顿回路可以定义为哈密顿回
9、路可以定义为n1个相邻节点个相邻节点vi0,vin-1,vi0的一个序列的一个序列可以通过生成可以通过生成n1个中间城市的组合来个中间城市的组合来得到所有的旅行路线,计算这些路线的得到所有的旅行路线,计算这些路线的长度,然后求得最短的线路长度,然后求得最短的线路算法时间复杂度算法时间复杂度 O(n!)!)nn!nn!nn!nn!5120s 9362ms131.72h1711.27year6720s 103.62s1424h18203year75.04ms1139.9s1515day 193857year840.3ms12479s16242day2077146year对于所设计的算法,如何说明它
10、是有效对于所设计的算法,如何说明它是有效的?的?如果对于同一问题,有多个不同的解法,如果对于同一问题,有多个不同的解法,如何知道哪一个算法更有效?如何知道哪一个算法更有效?算法复杂性分析目的在于选择合适的算算法复杂性分析目的在于选择合适的算法和改进算法法和改进算法实验测量法(实际执行时间、执行指实验测量法(实际执行时间、执行指令的条数)令的条数)把算法用某种程序设计语言实现并在计把算法用某种程序设计语言实现并在计算机上运行,计算实际运行时间算机上运行,计算实际运行时间如何进行算法时间效率分析如何进行算法时间效率分析例:让一台更快的、运行插入排序的计例:让一台更快的、运行插入排序的计算机(计算机
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 算法 概述
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内