夜光带你走进python开发 (二十二)**语言

夜光序言:

她走的那天上午

还勉强支起身跳了一支舞

傍晚洛阳就下了大雪

可她只等到了大雪,没有等到那个人

我也没见他来过

 

夜光带你走进python开发 (二十二)**语言

 

正文:三者最大实例分析

分支结构设计举例-三者最大
 分支结构能改变程序控制流
 好消息:我们可以开发更先进算法
 坏消息:复杂算法设计很难学
 以找出三个数字中最大者的程序设计为例。IPO如下:

输入:三个数值
处理:三者最大算法
输出:打印最大值


 计算机如何确定哪个是用户输入的最大值?

 


策略1:通盘比较

 第一种思路是通盘比较,即将每一个值与其他所有值比较以确定最大值

夜光带你走进python开发 (二十二)**语言

存在的问题:


 目前只有三个值,比较简单
 如果是五个值比较,表达式包含四个and,比较复杂
 每个表达式结果没有被互相利用,效率低(x1与x2比较了两次)


策略2:决策树


 决策树方法可以避免冗余比较
 先判断x1>x2,如果成立再判断x1>x3,否则判断x2>x3
 虽然效率高,但设计三个以上的方案,复杂性会爆炸性地增长

夜光带你走进python开发 (二十二)**语言

 

夜光:下图展示了三者最大问题决策树方法的流程图。这种方法的好处是效率高。然而,这种方法的结构比第一个更复杂。


 读者可以考虑自己设计一个决策树来发现的四个值最大者。(程序将需要在if-else语句中嵌套3层结构和8个赋值语句。)

夜光带你走进python开发 (二十二)**语言


策略3:顺序处理

 逐个扫描每个值,保留最大者
 以max变量保存当前最大值,完成最后一个扫描时,max就是最大值

夜光带你走进python开发 (二十二)**语言

这种方法处理更大规模问题时非常有效

借助循环结构,我们可以实现n个数最大者求值
 高效、易读

夜光带你走进python开发 (二十二)**语言


策略3:N者最大

夜光带你走进python开发 (二十二)**语言


策略4:Python内置函数


Python终极解决方案 -使用Python内置的max函数 

夜光带你走进python开发 (二十二)**语言

夜光:仔细思考是否还有一个更好的办法?


 首先找到一个正确的计算问题,然后使其清晰、简洁、高效、优雅、可扩展。
 良好的算法和程序应该逻辑清晰,易于阅读和维护。
 真正专业的程序员,应该学会如何借鉴