前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python——关于算法与数据结构

Python——关于算法与数据结构

原创
作者头像
Ed_Frey
修改2019-07-04 16:44:07
3150
修改2019-07-04 16:44:07
举报

去年末啃了一点数据结构的书和视频,感觉收获蛮多的,趁着最近学python刚好学到相关内容,就整理一下分享给大家。

其实一个问题通常有很多种答案和解法,虽说计算机运行速度已经够快了,但是要处理比较非常复杂的问题时,计算时间往往就没有那么乐观了。

比如百度搜索引擎,如果要我们自己做一个的话,你会怎么设计?面对互联网茫茫宇宙数据,如何在比较短的时间内,为客户提供相对满意的搜索结果,这就不是几十行代码就能实现的。就需要运用到高效的算法,下面就简单聊一下算法吧。

1.什么是算法

算法就是解决问题

问题是什么                Problem

我们有什么                Input

我们想要得到什么     Output

尝试最简单的方法     Simple Solution

看看如何改进            Develop Incrementally

是不是很简单的说,的确,算法就是从简到复杂,面对不同的数量级,不断优化自己的代码,举个简单的例子,随机给一个100以内的数字,要用多少次可以猜中(每次都会提示偏大还是偏小,或者猜中),最快捷的方法就是每次从中间的数字猜,不断缩小范围。2的七次方是128,也就是最多7次就可以猜中100以内的数字。

如果你要用其他天马星空的方法去猜,比如从1数到100,最多可能要猜100次。

上述2种方法都能猜中数字,但是孰优孰劣一目了然。这就是算法。

当要猜的数字范围不断变大,比如猜100万以内的数字,折中取数字猜,最多只需要20次即可(2的10次方是1024,20次方刚好100万多一点),如果再用第二种思路去猜,就费劲了。

2.一个常用的计时器函数

#!/usr/bin/env python3.6
# _*_ coding:utf-8 _*_
# __author__: Ed Frey
# DATE: 2019/3/14
from time import clock

def timer(f):
    def _f(*args):
        t0 = clock()
        f(*args)
        return clock() - t0
    return _f

def func(date):
    for i in range(10):
        print(i**3,date)
if __name__ == "__main__":
    time = timer(func)("2019-3-14")
    print(time)

通过上面的timer来运行func函数,就可以直接get到func函数的运行时间。至于timer后面两个括号,第一个是函数名,第二个相应的函数参数,会稍微有点绕哈。

大家以后就可以通过这种方式来检测自己代码运行效率,记得收藏哦!

对于业余码农来讲,如果要有质的飞跃,学习算法和数据结构是必不可少的。这许多年来,虽然我也做过不少脚本、代码,但是如果扪心自问一下,有技术含量吗?微乎其微,能认识到这点,我觉得就很弥足珍贵了。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档