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

640?wx_fmt=jpeg

题图: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表示法指出了最糟糕情况下的运行时间。

想象一下,这个数足够大的时候,所耗费的时间将是无法估量的,当然,还有很多比线性时间更糟糕的算法。

640?wx_fmt=png


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

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

def sumOfN3(n):
  return (n*(n+1))/2

print(sumOfN3(10))

640?wx_fmt=png

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

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

640?wx_fmt=jpeg

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

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

  • 7
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值