第1章基础算法思想

上传人:大米 文档编号:568257893 上传时间:2024-07-23 格式:PPT 页数:20 大小:247.50KB
返回 下载 相关 举报
第1章基础算法思想_第1页
第1页 / 共20页
第1章基础算法思想_第2页
第2页 / 共20页
第1章基础算法思想_第3页
第3页 / 共20页
第1章基础算法思想_第4页
第4页 / 共20页
第1章基础算法思想_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《第1章基础算法思想》由会员分享,可在线阅读,更多相关《第1章基础算法思想(20页珍藏版)》请在金锄头文库上搜索。

1、零基础学算法零基础学算法第第1章:基础算法思想章:基础算法思想且且他他气气票票蔼蔼储储膀膀雅雅半半碉碉疏疏省省乎乎曹曹严严歪歪爵爵巍巍十十闺闺肛肛警警佐佐蜗蜗糠糠乏乏堆堆蓄蓄意意诉诉淫淫叫叫第第1章章基基础础算算法法思思想想第第1章章基基础础算算法法思思想想课程安排课程安排编程的灵魂:数据结构编程的灵魂:数据结构+算法算法算法的作用算法的作用递推算法递推算法枚举枚举(穷举穷举)算法算法递归算法递归算法分治算法分治算法贪婪算法贪婪算法试探算法试探算法模拟算法模拟算法算法的评价算法的评价救救尸尸仇仇婉婉瓶瓶骚骚姥姥笨笨嫡嫡官官监监酿酿锄锄碟碟轮轮蘸蘸厚厚险险卉卉涝涝目目酿酿渔渔览览拭拭沤沤随随封封

2、造造碑碑岁岁傈傈第第1章章基基础础算算法法思思想想第第1章章基基础础算算法法思思想想1.1 编程的灵魂:数据结构编程的灵魂:数据结构+算法算法由上面的公式可以看出,程序设计中数据结构和算法是最重要的,是编程的灵魂。数据结构是算法实现的基础,算法总是要依赖于某种数据结构来实现的。往往是在发展一种算法的时候,构建了适合于这种算法的数据结构。一种数据结构如果脱离了算法,也就没有存在的价值了。衙衙曹曹股股赁赁藩藩微微抡抡宜宜湃湃甚甚墅墅官官寝寝哇哇做做娟娟垂垂痘痘吊吊灼灼胡胡伺伺砌砌嫉嫉郎郎称称寓寓贵贵刺刺弊弊遂遂识识第第1章章基基础础算算法法思思想想第第1章章基基础础算算法法思思想想1.2 算法的作

3、用算法的作用1.2.1 算法的作用算法的作用 解决任何一个实际问题,都不可避免地涉及到算法的问题,例如本章开头提到的存钱问题,再如节假日公司值班人员的排班等,都需要通过一定的算法,得到一个最优(或较优)的方案。1.2.2 实例:看商品猜价格实例:看商品猜价格 首先出示一件价格在999元以内的商品,参与者要猜出这件商品的价格。在猜价格的过程中,主持人会根据参与者给出的价格,相应地给出“高了”或“低了”的提示。妄妄源源抠抠驾驾炼炼茹茹厚厚册册揭揭冈冈尹尹要要苯苯多多仪仪屯屯凰凰手手矮矮杨杨此此轴轴恳恳群群缆缆汞汞乾乾捐捐错错订订凛凛息息第第1章章基基础础算算法法思思想想第第1章章基基础础算算法法思

4、思想想1.3 递推算法递推算法 递推算法使用“步步为营”的方法,不断利用已有的信息推导出新的东西。顺推法:是指从已知条件出发,逐步推算出要解决问题的方法。例如:斐波拉契数列就可以通过顺推法不断递推算出新的数据。逆推法:是从已知的结果出发,用迭代表达式逐步推算出问题开始的条件,即顺推法的逆过程。1.3.1 算法思路算法思路茂茂另另肺肺说说四四燎燎妆妆绦绦腆腆貉貉蹲蹲爷爷初初鲁鲁甄甄客客竖竖贩贩酬酬谗谗剩剩碌碌塌塌硒硒脆脆空空抗抗仰仰换换徒徒蔽蔽基基第第1章章基基础础算算法法思思想想第第1章章基基础础算算法法思思想想1.3.2 顺推实例顺推实例1.3 递推算法递推算法锦锦继继芭芭浩浩贯贯乓乓洲洲戎

5、戎溺溺夕夕享享辕辕赃赃吨吨趟趟荫荫拎拎蓝蓝溶溶谢谢菩菩年年吱吱君君紊紊憨憨委委沼沼庄庄屏屏光光碎碎第第1章章基基础础算算法法思思想想第第1章章基基础础算算法法思思想想1.3.3 逆推实例逆推实例若在第48月小龙大学毕业时连本带息要取1000元,则要先求出第47个月时银行存款的钱数第47月月末存款=1000/(1+0.0171/12);第46月月末存款=(第47月月末存款+1000)/(1+0.0171/12)依次类推,可以求出第45月、第44月的月末存款的数值第45月月末存款=(第46月月末存款+1000)/(1+0.0171/12)第44月月末存款=(第45月月末存款+1000)/(1+0.

6、0171/12) 第2月月末存款=(第3月月末存款+1000)/(1+0.0171/12)第1月月末存款=(第2月月末存款+1000)/(1+0.0171/12)1.3 递推算法递推算法嗅嗅郴郴号号蒸蒸招招没没猾猾革革及及谢谢烽烽春春万万顾顾惩惩斌斌墟墟趾趾专专兔兔门门陡陡瘦瘦贵贵咒咒抱抱悠悠钎钎琼琼排排断断兴兴第第1章章基基础础算算法法思思想想第第1章章基基础础算算法法思思想想1.4 枚举枚举(穷举穷举)算法算法 枚举法的本质就是从所有候选答案中去搜索正确的解,使用该算法需要满足两个条件:(1)可预先确定候选答案的数量;(2)候选答案的范围在求解之前必须有一个确定的集合。1.4.1 算法思路

7、算法思路苞苞庭庭资资厉厉辛辛旬旬崔崔颅颅狄狄澈澈卷卷城城椿椿猪猪查查硬硬鸵鸵哥哥镐镐蛰蛰和和韦韦楞楞雄雄沿沿堆堆竣竣遣遣依依浙浙呢呢窑窑第第1章章基基础础算算法法思思想想第第1章章基基础础算算法法思思想想1.4 枚举枚举(穷举穷举)算法算法1.4.2 实例:填数游戏实例:填数游戏纶纶抡抡跌跌讯讯了了响响锐锐醛醛闪闪寐寐咙咙浊浊调调吮吮帕帕羹羹卿卿夕夕粪粪亭亭禹禹扇扇请请铃铃杆杆戊戊兹兹拔拔趣趣蓝蓝惯惯栓栓第第1章章基基础础算算法法思思想想第第1章章基基础础算算法法思思想想 由于算术表达式的特殊性,在编程求解这个算式时,需要注意以下几点:当填入除号时,要求右侧的数不能为0。乘除的运算级别比加减高

8、。 1.4 枚举枚举(穷举穷举)算法算法1.4.3 实例:填运算符实例:填运算符轨轨隔隔苍苍扎扎忍忍蜜蜜街街崖崖铭铭蜘蜘瞧瞧赚赚私私怜怜盒盒系系凑凑冯冯圃圃蔬蔬澎澎酚酚制制单单甫甫图图藤藤灭灭些些疯疯磋磋双双第第1章章基基础础算算法法思思想想第第1章章基基础础算算法法思思想想1.5 递归算法递归算法 递归算法,就是一种直接或者间接地调用自身的算法。递归算法的具体实现过程一般通过函数或子过程来完成,在函数或子过程的内部,编写代码直接或者间接地调用自己,即可完成递归操作。1.5.1 算法思路算法思路罗罗镭镭零零杖杖鞘鞘尊尊拨拨啄啄美美资资饶饶襄襄眨眨芋芋畏畏掂掂蠕蠕情情坏坏番番舒舒整整扳扳措措接接

9、贡贡扰扰括括亦亦汕汕啸啸闪闪第第1章章基基础础算算法法思思想想第第1章章基基础础算算法法思思想想1.5.2 求阶乘求阶乘1.5 递归算法递归算法 6!=6*5*4*3*2*1斯斯年年郡郡哮哮患患齐齐柑柑督督杜杜粘粘挝挝囊囊怖怖姿姿决决脐脐川川毅毅用用拾拾混混叭叭扁扁闪闪蒸蒸清清行行讲讲锡锡苔苔苯苯泼泼第第1章章基基础础算算法法思思想想第第1章章基基础础算算法法思思想想1.5.3 实例:数制转换实例:数制转换1.5 递归算法递归算法 (121)10=(1111001)2烷烷谁谁撬撬漓漓碗碗喳喳漏漏妹妹剔剔磐磐碱碱仲仲袜袜嘱嘱寿寿袋袋馆馆屎屎拔拔臀臀秒秒注注悄悄踢踢昧昧狡狡为为谗谗烯烯亏亏眯眯惮惮

10、第第1章章基基础础算算法法思思想想第第1章章基基础础算算法法思思想想1.6 分治算法分治算法1.6.1 算法思路算法思路 使用分治法设计程序时,一般可按以下步骤进行:(1)分解:将要求解的问题划分成若干规模较小的同类问题;(2)求解:当子问题划分得足够小时,用较简单的方法解决;(3)合并:按求解问题的要求,将子问题的解逐层合并,即可构成最终的解。1.6.2 实例:乒乓球比赛赛程安排实例:乒乓球比赛赛程安排伎伎毫毫玫玫垂垂雕雕序序溜溜谈谈垣垣欧欧胞胞捕捕恍恍咱咱崎崎稼稼池池殊殊狸狸辑辑聋聋辩辩钦钦嗓嗓制制拟拟那那嚼嚼攻攻秉秉嘉嘉四四第第1章章基基础础算算法法思思想想第第1章章基基础础算算法法思思

11、想想戍戍惋惋来来径径鸳鸳仔仔漾漾奥奥只只谰谰轰轰腑腑氰氰瞒瞒稠稠作作审审捷捷属属夯夯撰撰冕冕匆匆仇仇长长值值筹筹寅寅拓拓惯惯蜕蜕旦旦第第1章章基基础础算算法法思思想想第第1章章基基础础算算法法思思想想1.7 贪婪算法贪婪算法1.7.1 算法思路算法思路 贪婪算法基本思路:从问题的某一个初始解出发逐步逼近给定的目标,以尽可能快地求得更好的解。当达到算法中的某一步不能再继续前进时,就停止算法,给出近似解。 由贪婪算法的特点和思路可看出,该算法存在以下问题:不能保证最后的解是最优的;不能用来求最大或最小解问题;只能求满足某些约束条件的可行解的范围。1.7.2 实例:换零钱实例:换零钱 人民币有100

12、、50、10、5、2、1、0.5、0.2、0.1等多种面额(单位为元)。在补零钱时,可有多种方案,例如需补零钱68.90元,至少可有以下方案:1张50、1张10、1张5、3张1、1张0.5、2张0.2;1张50、1张10、1张5、3张1、1张0.5、4张0.1;6张10、1张5、3张1、1张0.5、2张0.2。懦懦像像叮叮熏熏吓吓悉悉湛湛涉涉因因时时痕痕赤赤箍箍聊聊屠屠宣宣晦晦概概详详银银颇颇原原冉冉亏亏澜澜词词醒醒戴戴唱唱锐锐撬撬刻刻第第1章章基基础础算算法法思思想想第第1章章基基础础算算法法思思想想1.8 试探算法试探算法1.8.1 算法思路算法思路 为了求得问题的解,先选择某一种可能情况

13、进行试探,在试探过程中,一旦发现原来的选择的假设情况是错误的,就退回一步重新选择,继续向前试探,如此反复进行,直至得到解或证明无解。 1.8.2 实例:生成彩票号码组合实例:生成彩票号码组合 假设有一种彩票,每注由7个129的数字组成,且这7个数字不能相同,编写程序生成所有的号码组合。骑骑位位垂垂吱吱版版若若帖帖产产找找稚稚鼓鼓佃佃呕呕秽秽贰贰粳粳兹兹脐脐奴奴袭袭剑剑璃璃缘缘腑腑鞭鞭榨榨铭铭共共塔塔宛宛只只浴浴第第1章章基基础础算算法法思思想想第第1章章基基础础算算法法思思想想1.9 模拟算法模拟算法1.9.1 算法思路算法思路 在程序设计语言中,可使用随机函数来模拟自然界中发生的不可预测情况

14、。C语言中使用srand()和rand()函数可生成随机数。1.9.2 实例:猜数游戏实例:猜数游戏 使用模拟法编写一个猜数游戏,由计算机随机生成一个1100之内的整数,然后由用户来猜这个数,根据用户猜测的次数分别给出不同的提示文字。1.9.3 实例:模拟掷骰子游戏实例:模拟掷骰子游戏 由用户输入骰子数量和参赛人数,然后由计算机随机生成每一粒骰子的数量,再累加起来就得到每一个选手的总点数。课课庸庸阑阑理理惋惋创创乍乍铱铱帛帛裳裳辰辰嗓嗓该该秤秤菌菌顶顶瓷瓷松松贱贱顽顽公公驾驾尧尧观观登登雾雾膳膳渊渊疡疡堡堡蛤蛤玛玛第第1章章基基础础算算法法思思想想第第1章章基基础础算算法法思思想想1.10 算

15、法的评价算法的评价1.10.1 算法评价原则算法评价原则正确性。高效性。空间性。可读性。1.10.2 算法的效率算法的效率 通常认为,通过统计算法中基本操作重复执行的次数就可近似地得到算法的执行效率,用O(n)表示,称为时间复杂度。 圣圣逞逞可可艾艾栗栗狐狐座座烦烦堤堤窥窥妨妨厘厘馁馁翘翘遭遭拍拍室室阻阻斟斟广广擂擂跨跨殆殆筹筹署署枣枣孪孪染染陕陕瓣瓣言言稿稿第第1章章基基础础算算法法思思想想第第1章章基基础础算算法法思思想想性格决定命运性格决定命运, 专注成就人生专注成就人生缆缆性性屯屯毙毙夺夺除除多多至至澎澎哗哗臂臂蒲蒲狮狮饰饰枪枪义义砸砸烈烈泽泽瘸瘸剑剑丁丁纱纱哦哦砚砚若若镁镁贞贞霞霞虞虞性性贼贼第第1章章基基础础算算法法思思想想第第1章章基基础础算算法法思思想想

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号