Python第一周小结

经历了两个星期Linux运维基础的铺垫,这周我们正式开始了python的学习。经过第一周的各种挣扎以及反复训练,终于有所收获了一点东西。现在将第一周中学到的一个非常重要的算法技巧总结如下:

即:折半思想

例:给定一个不超过五位数的正整数,判断该数有几位数

Code1:                                                                                Code2:

a = int(input(‘Please enter number1: ‘))                            a=int((input”Please enter a number:”))

if a<10:                                                                                      if a >= 100:
  print(“yiweishu”)                                                                         if a >= 10000:
elif a<100:                                                                                           print(5)
  print(“liangweishu”)                                                                    elif a >= 1000:
elif a<1000:                                                                                         print(4)
  print(“sanweishu”)                                                                       else:
elif a<10000:                                                                                      print(3)
  print(“siweishi”)                                                                     else:
elif a<100000:                                                                                  if a >= 10:
  print(“wuweishu”)                                                                              print(2)
                                                                                                              else:
                                                                                                                   print(1)

       通过对比这两组简单的代码,我们发现右边的代码明显的使用了折半的思想。具体体现为当判断一个不超过五位数的正整数时,由于该数最大可能出现的位数是五位,因此找到判断的中间点,即100。从100先开始判断起,比100大即进入循环,否则不进入。直接缩小了匹配的范围,对于算法效率的提升有显著的效果。因此,在以后遇到查找匹配以及图形打印等具有对称性质的类型分析时,适当的通过折半提升算法效率,不失为一个很好的选择。

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/93070

(0)
guoxingxingguoxingxing
上一篇 2018-03-26 20:17
下一篇 2018-03-26 20:22

相关推荐

  • Javascript 装载和执行

    一两个月前在淘宝内网里看到一个优化Javascript代码的竞赛,发现有不少的人对Javascript的执行和装载的基础并不懂,所以,从那天起我就想写一篇文章,但一直耽搁了。自上篇《浏览器渲染原理简介》,正好也可以承前启后。 首先,我想说一下Javascript的装载和执行。通常来说,浏览器对于Javascript的运行有两大特性:1)载入后马上执行,2)执…

    Linux干货 2016-08-15
  • Linux高级磁盘管理-RAID管理

    在冯诺依曼体系机构中,输入输出要存储的外部磁盘I/O能力实在太低,尤其是企业面对高并发的访问量,在系统内部需要大量调度磁盘的上的网页文件资源,这些都会产生大量的I/O,一个磁盘的I/O能力不管如何提升毕竟是有线的,尤其是机械硬盘;同时为了保障业务的连续性,磁盘故障时必须提供冗余能力,面对这样的实际需求环境,RAID技术产生了,通过组织磁盘阵列方式提供I/O,…

    Linux干货 2016-09-06
  • 用户组和权限管理2

    十七、linux文件系统上的特殊权限     suid:s表示,sgid:s表示,sticky:t表示          安全上下文     前提:进程有属主和属组,文件有属主和属组  &n…

    Linux干货 2016-08-04
  • keepalive高可用haproxy实现URL资源的动静分离

    keepalive高可用haproxy实现动静分离URL资源 实现要点: (1) 动静分离discuzx,动静都要基于负载均衡实现; (2) 进一步测试在haproxy和后端主机之间添加varnish缓存; (3) 给出拓扑设计; (4) haproxy的设定要求:     (a…

    Linux干货 2016-11-12
  • GDB中应该知道的几个调试方法

    七、八年前写过一篇《用GDB调试程序》,于是,从那以后,很多朋友在MSN上以及给我发邮件询问我关于GDB的问题,一直到今天,还有人在问GDB的相关问题。这么多年来,有一些问题是大家反复在问的,一方面,我觉得我以前的文章可能没有说清楚,另一方面,我觉得大家常问的问题正是最有用的,所以,在这里罗列出来。希望大家补充。 一、多线程调试 多线程调试可能是问得最多的。…

    Linux干货 2016-07-11
  • 软件包管理器之二——YUM介绍及使用

    一、前言     之前我们介绍了RPM的应用(详细请查看http://www.178linux.com/archives/6383),发觉RPM安装软件有一个很繁琐的问题,那就是包与包之间的依赖关系,如果想正常安装和使用软件程序,就必须根据要求一步一步的解决软件之间的依赖关系。那么如果程序使用的包很多,将会很消耗使用人…

    Linux干货 2015-07-21