- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
程序设计与问题求解
——算法设计的要求
算法设计
日常生活中所执行的算法一般不太复杂,不值得耗费太多精力来
开发完美的算法
从超市采购回家,打开杂货袋放置食品的过程
进行大规模商业包装和拆装
算法设计
计算机处理的任务往往必须执行多次,值得花费时间来设计有
效的方法
最终得到的方法复杂或难以理解也无妨
潜在的回报是巨大的
算法设计的要求
正确性
具体步骤
确定性
有限性
可终止性
算法效率的度量
算法分析(Algorithm Analysis ):对算法所需要的两种计算
机资源——时间和空间进行估算
时间复杂度(Time Complexity )
空间复杂度(Space Complexity )
算法效率的度量
算法效率分析的目的:
设计算法——设计出复杂性尽可能低的算法
选择算法——在多种算法中选择其中复杂性最低者
如何分析算法效率?
先写程序,直接观察结果
同一算法,程序不同,运行时间不同
写代码太费事,如果写出来才发现很慢…
不写程序,直接分析算法
算法复杂度
计算算法的时间复杂度时,往往不需要算出精确的结果
对于足够大的输入规模来说,我们只需要关心运行时间的增长
量级,也就是研究算法的渐进效率
算法复杂度
O记号表示的是一个渐进上界
记为:f(n)=O(g(n)) ,表示f(n)的阶不高于g(n)的阶
O(g(n))={f(n)|∃n ,c 0, s.t. ∀nn , 0≤f(n)≤cg(n)}
0 0
算法复杂度
算法(渐进)时间复杂度,一般均表示为以下几种数量级的形式(n为问题的规
模,c为一常量) :
Ο(1)称为常数级
Ο(logn)称为对数级
Ο(n)称为线性级
c
Ο(n )称为多项式级
n
Ο(c )称为指数级
Ο(n!)称为阶乘级
算法复杂度
算法复杂度
时间复杂度和空间复杂度的关系
折衷 (tradeoff)
哪个更重要?
程序设计与问题求解 THANKS
算法设计的要求 FOR YOUR WATCHING
文档评论(0)