专栏首页量化投资与机器学习【干货分享】Python数据结构与算法设计总结篇

【干货分享】Python数据结构与算法设计总结篇

1.Python数据结构篇

数据结构篇主要是阅读[Problem Solving with Python](http://interactivepython.org/courselib/static/pythonds/index.html)时写下的阅读记录,当然,也结合了部分[算法导论]( http://en.wikipedia.org/wiki/Introduction_to_Algorithms)中的内容,此外还有不少wikipedia上的内容,所以内容比较多,可能有点杂乱。这部分主要是介绍了如何使用Python实现常用的一些数据结构,例如堆栈、队列、二叉树等等,也有Python内置的数据结构性能的分析,同时还包括了搜索和排序(在算法设计篇中会有更加详细的介绍)的简单总结。每篇文章都有实现代码,内容比较多,简单算法一般是大致介绍下思想及算法流程,复杂的算法会给出各种图示和代码实现详细介绍。这一部分是下面算法设计篇的前篇,如果数据结构还不错的可以直接看算法设计篇,遇到问题可以回来看数据结构篇中的某个具体内容充电一下。 (1)[搜索]( http://hujiaweibujidao.github.io/blog/2014/05/07/python-algorithms-search/) 简述顺序查找和二分查找,详述Hash查找(hash函数的设计以及如何避免冲突) (2)[排序]( http://hujiaweibujidao.github.io/blog/2014/05/07/python-algorithms-sort/) 简述各种排序算法的思想以及它的图示和实现 (3)[数据结构]( http://hujiaweibujidao.github.io/blog/2014/05/08/python-algorithms-datastructures/) 简述Python内置数据结构的性能分析和实现常用的数据结构:栈、队列和二叉堆

(4)[树总结](http://hujiaweibujidao.github.io/blog/2014/05/08/python-algorithms-Trees/) 简述二叉树,详述二叉搜索树和AVL树的思想和实现

2.Python算法设计篇

算法设计篇主要是阅读[Python Algorithms: Mastering Basic Algorithms in the Python Language](http://link.springer.com/book/10.1007%2F978-1-4302-3238-4)[**点击链接可进入Springer下载原书电子版**]之后写下的读书总结,原书大部分内容结合了经典书籍[算法导论](http://en.wikipedia.org/wiki/Introduction_to_Algorithms),内容更加细致深入,主要是介绍了各种常用的算法设计思想,以及如何使用Python高效巧妙地实现这些算法,这里有别于前面的数据结构篇,部分算法例如排序就不会详细介绍它的实现细节,而是侧重于它内在的算法思想。这部分使用了一些与数据结构有关的第三方模块,因为这篇的重点是算法的思想以及实现,所以并没有去重新实现每个数据结构,但是在介绍算法的同时会分析Python内置数据结构以及第三方数据结构模块的优缺点,也就意味着该篇比前面都要难不少,这里每篇文章都有实现代码,但是代码我一般都不会分析,更多地是分析算法思想,所以内容都比较多,即便如此也没有包括原书对应章节的所有内容,因为内容实在太丰富了,所以只是选择经典的算法实例来介绍算法核心思想,除此之外,还有不少内容是原书没有的,部分是来自算法导论。

本篇的顺序按照原书[Python Algorithms: Mastering Basic Algorithms in the Python Language](http://link.springer.com/book/10.1007%2F978-1-4302-3238-4)的章节来安排的(章节标题部分相同部分不同哟),为了节省时间以及保持原著的原滋原味,部分内容(一般是比较难以翻译和理解的内容)直接摘自原著英文内容。 (1)[Python Algorithms - C1 Introduction]( http://hujiaweibujidao.github.io/blog/2014/07/01/python-algorithms-introduction/) 本节主要是对原书中的内容做些简单介绍,说明算法的重要性以及各章节的内容概要。 (2)[Python Algorithms - C2 The basics]( http://hujiaweibujidao.github.io/blog/2014/07/01/python-algorithms-the-basics/) 本节主要介绍了三个内容:算法渐近运行时间的表示方法、六条算法性能评估的经验以及Python中树和图的实现方式。 (3)[Python Algorithms - C3 Counting 101]( http://hujiaweibujidao.github.io//blog/2014/07/01/python-algorithms-counting-101/) 原书主要介绍了一些基础数学,例如排列组合以及递归循环等,但是本节只重点介绍计算算法的运行时间的三种方法 (4)[Python Algorithms - C4 Induction and Recursion and Reduction](http://hujiaweibujidao.github.io/blog/2014/07/01/python-algorithms-induction/) 本节主要介绍算法设计的三个核心知识:Induction(推导)、Recursion(递归)和Reduction(规约),这是原书的重点和难点部分 (5)[Python Algorithms - C5 Traversal]( http://hujiaweibujidao.github.io/blog/2014/07/01/python-algorithms-traversal/) 本节主要介绍图的遍历算法BFS和DFS,以及对拓扑排序的另一种解法和寻找图的(强)连通分量的算法 (6)[Python Algorithms - C6 Divide and Combine and Conquer](http://hujiaweibujidao.github.io/blog/2014/07/01/python-algorithms-divide-and-combine-and-conquer/) 本节主要介绍分治法策略,提到了树形问题的平衡性以及基于分治策略的排序算法 (7)[Python Algorithms - C7 Greedy]( http://hujiaweibujidao.github.io/blog/2014/07/01/python-algorithms-greedy/) 本节主要通过几个例子来介绍贪心策略,主要包括背包问题、哈夫曼编码和最小生成树 (8)[Python Algorithms - C8 Dynamic Programming](http://hujiaweibujidao.github.io/blog/2014/07/01/python-algorithms-dynamic-programming/) 本节主要结合一些经典的动规问题介绍动态规划的备忘录法和迭代法这两种实现方式,并对这两种方式进行对比 (9)[Python Algorithms - C9 Graphs]( http://hujiaweibujidao.github.io/blog/2014/07/01/python-algorithms-graphs/)

本节主要介绍图算法中的各种最短路径算法,从不同的角度揭示它们的内核以及它们的异同

本文分享自微信公众号 - 量化投资与机器学习(ZXL_LHTZ_JQXX),作者:西西

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-04-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 作为Python中级程序员,有句话不知当讲不当讲 ( ̄へ ̄)

    字符串是对象。列表对象。函数对象。甚至模块也是对象。任何东西都是一个对象,因为它可以赋值给一个变量或作为参数传递给一个函数。

    量化投资与机器学习微信公众号
  • 完整中文版 | 2019 Python 官方年度报告强势来袭!

    每年Python官方都会做一次年度报告,如果你想了解Python的现状、趋势与未来,可以说没有比这份报告更有用的信息了。

    量化投资与机器学习微信公众号
  • 高逼格使用Pandas加速代码,向for循环说拜拜!

    使用Pandas dataframe执行数千甚至数百万次计算仍然是一项挑战。你不能简单的将数据丢进去,编写Python for循环,然后希望在合理的时间内处理数...

    量化投资与机器学习微信公众号
  • 为什么有些公司在机器学习业务方面倾向使用 R + Hadoop 方案?

    作者:王威扬 文思海辉技术有限公司数据挖掘解决方案经理 知乎 https://www.zhihu.com/question/22145076/answer/...

    机器学习AI算法工程
  • 你真的了解HR问你的问题么?

    现在是资源共享的时代,同样也是知识分享的时代,如果你觉得本文能学到知识,请把知识与别人分享。 面试的三大要素:简历,笔试,面试,前几天讲了笔试题,还发了...

    互扯程序
  • 在机器学习方面使用 R + Hadoop 方案真的有那么好?

    因为他们在不懂R和Hadoop的特征应用场景的情况下,恰好抓到了一根免费,开源的稻草。

    华章科技
  • 安装IDEA和运行SCALA程序

    下载与配置IDEA 从官网下载 里面有Ultimate(最终版)和Community(社区版),对于普通的开发者来说,社区版就够了,然后因为我本来配置了JDK...

    用户1148523
  • 算法工程师如何应对业务方和老板的灵魂拷问?

    潘乱老师的文章中有一段叙述,描述了 Robin 经常反馈 badcase 的情况:

    石晓文
  • 微信小程序和APP的区别是什么?小程序和独立app到底哪个好?

    小程序从2017年初上线,取得的成就是有目共睹,目前一年狂揽6亿用户、3亿的日活、上线100万个……不需要下载、不需要安装,背靠微信10亿的日活跃用户,有观点认...

    速成应用小程序开发平台
  • Python实现简单的HTTP服务器(支

    py3study

扫码关注云+社区

领取腾讯云代金券