学 Python 仅仅只学 Python 语法和 API 是远远不够的,掌握算法和数据结构这种永远都不会过时的核心技能才是决定一个程序员职业发展的关键因素。算法和数据结构对专业程序员来说重要性不言而喻,同样一个问题,不同算法效率可谓千差万别。在问题规模很小的时候你可能感知不到,但是一旦数据上升到TB级别时,两者的差距就像西瓜和芝麻的差别了。

举个简单例子:我们要计算前n个整数之和,你最先想到的算法可能是迭代:

def sumOfN(n):

    theSum = 0

    for i in range(1,n+1):

        theSum = theSum + i

    return theSum

print(sumOfN(10))

代码非常直观,初学者都能读懂,就是从1累加到n,得到最后的结果。这种算法的效率随着n的增加而变化,时间复杂度是O(n),线性时间,大O表示法指出了最糟糕情况下的运行时间。想象一下,这个数足够大的时候,所耗费的时间将是无法估量的,当然,还有很多比线性时间更糟糕的算法。

当然,最后还有一种最理想的算法,就是常数级别的,O(1) 常数级复杂度。也就是说程序运行的时间与需要处理的数据大小无关。

如果利用数学方程而不是迭代来计算前n个整数的和,他的复杂度就是 O(1)

def sumOfN3(n):

   return (n*(n+1))/2

print(sumOfN3(10))

Google这样大数据公司,数据都是以TB为单位的数据量,索引的网页数量超过1万亿的情况下,没有牛逼的算法,难以撑起一个巨无霸公司。很多人觉得学算法没什么用,因为工作上就是调API,写写业务逻辑,学这些干什么?如果这么想,那你永远都是在写业务逻辑代码,写到35岁转行。

现在学算法还来得及吗?除了生孩子,做任何事情都不会被年龄限制。推荐这本《problem-solving-with-algorithms-and-data-structure-usingpython》,感谢作者和译者的付出。

在线阅读地址: https://facert.gitbooks.io/python-data-structure-cn/2.%E7%AE%97%E6%B3%95%E5%88%86%E6%9E%90/2.2.%E4%BB%80%E4%B9%88%E6%98%AF%E7%AE%97%E6%B3%95%E5%88%86%E6%9E%90/

PDF 下载地址:公众号回复“算法”

关注公众号「Python之禅」(id:vttalk)获取最新文章

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
Top