Py学习  »  Python

强烈推荐一本免费算法书《用Python解决数据结构与算法问题》

Python之禅 • 5 年前 • 753 次点击  

题图:Photo by Luc Tribolet on Unsplash

学 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 下载地址:公众号回复“算法”


关注公众号
每天让自己更厉害一点点


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/dh2iDErEJ0
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/21796
 
753 次点击