Python数据结构与算法设计(总结篇)
的确,正如偶像Bruce Eckel所说,”Life is short, you need Python”!
如果你正在考虑学Java还是Python的话,那就别想了,选Python吧,你的人生会有更多的时间做其他有意思的事情。
研究生之前我没学python是有原因的:首先,我怕蛇,很怕很怕,而这货的logo竟然就是蛇,我因故而避之;其次,我不喜欢脚本语言,我会shell,但是写的时候不是很爽,只是在处理些文件操作或者字符串操作的时候才会想起它,听说python脚本神马的,我便又避之。
但是,上了研究生发现用Python的人很多,而且这货简直被神化了,无所不能,吊炸天的Edx的后台竟然就是用的Python,于是花了一个下午刷了本《Head First Python》,感觉没啥特别,只是写起来轻便,甚至还能开发Android,让我大吃一惊。后来,又接着看了些Python书,发现真的如此,很多时候用Java写了几十行的代码用Python几行就搞定了,而且它同样拥有大量的第三方模块,于是我就这么走进了Python的世界。Python要入门很简单,毕竟我搞Java这么多年了,这俩太多的相似点了,入门之后写写数据结构,写写算法,熟悉一些高级特性,使用一些第三方模块之后差不多就入门了,现在,做任何事情,我首先想到的是用Python如何实现?!嘿嘿,”Life
is short, go start Python”!
本人才疏学浅,学识大多浅尝辄止,故文章若有错误,不论是文字笔误还是理解有错,烦请您留言以告知,本人必定感激不尽!
Python分类下的系列文章,不断更新中
1.Python基础知识篇
Python Basics 和 Python Advances。前者是Python基础的简单总结,后者实际上是罗列了些关于Python高级特性的好文章
2.Python数据结构篇
数据结构篇主要是阅读Problem Solving with Python时写下的阅读记录,当然,也结合了部分算法导论中的内容,此外还有不少wikipedia上的内容,所以内容比较多,可能有点杂乱。这部分主要是介绍了如何使用Python实现常用的一些数据结构,例如堆栈、队列、二叉树等等,也有Python内置的数据结构性能的分析,同时还包括了搜索和排序(在算法设计篇中会有更加详细的介绍)的简单总结。每篇文章都有实现代码,内容比较多,简单算法一般是大致介绍下思想及算法流程,复杂的算法会给出各种图示和代码实现详细介绍。这一部分是下面算法设计篇的前篇,如果数据结构还不错的可以直接看算法设计篇,遇到问题可以回来看数据结构篇中的某个具体内容充电一下,嘿嘿。
(1)搜索 简述顺序查找和二分查找,详述Hash查找(hash函数的设计以及如何避免冲突)
(2)排序 简述各种排序算法的思想以及它的图示和实现
(3)数据结构 简述Python内置数据结构的性能分析和实现常用的数据结构:栈、队列和二叉堆
(4)树总结 简述二叉树,详述二叉搜索树和AVL树的思想和实现
3.Python算法设计篇
算法设计篇主要是阅读Python Algorithms: Mastering Basic Algorithms in the Python Language[点击链接可进入Springer下载原书电子版]之后写下的读书总结,原书大部分内容结合了经典书籍算法导论,内容更加细致深入,主要是介绍了各种常用的算法设计思想,以及如何使用Python高效巧妙地实现这些算法,这里有别于前面的数据结构篇,部分算法例如排序就不会详细介绍它的实现细节,而是侧重于它内在的算法思想。这部分使用了一些与数据结构有关的第三方模块,因为这篇的重点是算法的思想以及实现,所以并没有去重新实现每个数据结构,但是在介绍算法的同时会分析Python内置数据结构以及第三方数据结构模块的优缺点,也就意味着该篇比前面都要难不少,但是我想我的介绍应该还算简单明了,嘿嘿,除此之外,里面还有很多关于python开发的内容,精彩不容错过!
这里每篇文章都有实现代码,但是代码我一般都不会分析,更多地是分析算法思想,所以内容都比较多,即便如此也没有包括原书对应章节的所有内容,因为内容实在太丰富了,所以我只是选择经典的算法实例来介绍算法核心思想,除此之外,还有不少内容是原书没有的,部分是来自算法导论,部分是来自我自己的感悟,嘻嘻。该篇对于大神们来说是小菜,请一笑而过,对于菜鸟们来说可能有点难啃,所以最适合的是和我水平差不多的,对各个算法都有所了解但是理解还不算深刻的半桶水的程序猿,嘿嘿。
本篇的顺序按照原书Python Algorithms: Mastering Basic Algorithms in the Python Language的章节来安排的(章节标题部分相同部分不同哟),为了节省时间以及保持原著的原滋原味,部分内容(一般是比较难以翻译和理解的内容)直接摘自原著英文内容。
1.你也许觉得很多内容你都知道嘛,没有看的必要,其实如果是我的话我也会这么想,但是如果只是归纳一个算法有哪些步骤,那这个总结也就没有意义了,我觉得这个总结的亮点在于想办法说清楚一个算法是怎么想出来的,有哪些需要注意的,如何进行优化的等等。
2.你也许还会说算法导论不是既权威又全面么,基本上每个算法都还有详细的证明呢,读算法导论岂不更好些,当然,你如果想读算法导论我不拦着你,读完了感觉自己整个人都不好了别怪小弟没有提醒你哟,嘻嘻嘻,左一个性质右一个定理实在不适合算法科普的啦,没有几个人能够坚持读完的。
3.如果你细读本系列的话我保证你会有不少收获的,需要看算法导论哪个部分的地方我会给出提示的,嘿嘿。温馨提示,精彩内容从第4节开始哟,么么哒 O(∩_∩)O~
(1)Python Algorithms - C1 Introduction 本节主要是对原书中的内容做些简单介绍,说明算法的重要性以及各章节的内容概要。
(2)Python Algorithms - C2 The basics 本节主要介绍了三个内容:算法渐近运行时间的表示方法、六条算法性能评估的经验以及Python中树和图的实现方式。
(3)Python Algorithms - C3 Counting 101 原书主要介绍了一些基础数学,例如排列组合以及递归循环等,但是本节只重点介绍计算算法的运行时间的三种方法
(4)Python Algorithms - C4 Induction and Recursion and Reduction 本节主要介绍算法设计的三个核心知识:Induction(推导)、Recursion(递归)和Reduction(规约),这是原书的重点和难点部分
(5)Python Algorithms - C5 Traversal 本节主要介绍图的遍历算法BFS和DFS,以及对拓扑排序的另一种解法和寻找图的(强)连通分量的算法
(6)Python Algorithms - C6 Divide and Combine and Conquer 本节主要介绍分治法策略,提到了树形问题的平衡性以及基于分治策略的排序算法
(7)Python Algorithms - C7 Greedy 本节主要通过几个例子来介绍贪心策略,主要包括背包问题、哈夫曼编码和最小生成树
(8)Python Algorithms - C8 Dynamic Programming 本节主要结合一些经典的动规问题介绍动态规划的备忘录法和迭代法这两种实现方式,并对这两种方式进行对比
(9)Python Algorithms - C9 Graphs 本节主要介绍图算法中的各种最短路径算法,从不同的角度揭示它们的内核以及它们的异同
Python数据结构与算法设计(总结篇)的更多相关文章
- Python数据结构与算法设计总结篇
1.Python数据结构篇 数据结构篇主要是阅读[Problem Solving with Python]( http://interactivepython.org/courselib/static ...
- Python数据结构与算法--List和Dictionaries
Lists 当实现 list 的数据结构的时候Python 的设计者有很多的选择. 每一个选择都有可能影响着 list 操作执行的快慢. 当然他们也试图优化一些不常见的操作. 但是当权衡的时候,它们还 ...
- python数据结构与算法之问题求解实例
关于问题求解,书中有一个实际的案例. 上图是一个交叉路口的模型,现在问题是,怎么安排红绿灯才可以保证相应的行驶路线互不交错. 第一步,就是把问题弄清楚. 怎么能让每一条行驶路线不冲突呢? 其实,就是给 ...
- python数据结构与算法
最近忙着准备各种笔试的东西,主要看什么数据结构啊,算法啦,balahbalah啊,以前一直就没看过这些,就挑了本简单的<啊哈算法>入门,不过里面的数据结构和算法都是用C语言写的,而自己对p ...
- Python数据结构与算法--算法分析
在计算机科学中,算法分析(Analysis of algorithm)是分析执行一个给定算法需要消耗的计算资源数量(例如计算时间,存储器使用等)的过程.算法的效率或复杂度在理论上表示为一个函数.其定义 ...
- C#算法设计排序篇之04-选择排序(附带动画演示程序)
选择排序(Selection Sort) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/681 访问. 选择排序是一种简 ...
- Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例
本文实例讲述了Python数据结构与算法之图的最短路径(Dijkstra算法).分享给大家供大家参考,具体如下: # coding:utf-8 # Dijkstra算法--通过边实现松弛 # 指定一个 ...
- Python数据结构与算法之图的广度优先与深度优先搜索算法示例
本文实例讲述了Python数据结构与算法之图的广度优先与深度优先搜索算法.分享给大家供大家参考,具体如下: 根据维基百科的伪代码实现: 广度优先BFS: 使用队列,集合 标记初始结点已被发现,放入队列 ...
- python数据结构与算法之算法和算法分析
1.问题.问题实例.算法的概念区分. 一个例子说明一下: 问题:判断一个正整数N是否为素数 #问题是需要解决的一个需求 问题实例:判断1314是否为素数? #问题实例是该问题的一个具体例子 算法: ...
随机推荐
- VS2013 Pro版本密钥
Visual Studio Professional 2013 KEY(密钥): XDM3T-W3T3V-MGJWK-8BFVD-GVPKY
- sql语句 字段的赋值
将同一个表中的一个字段2的所有值赋值给另一个字段1 UPDATE 表名 SET 字段1 = 字段2 也可以把字段所有的值赋为null UPDATE 表名 SET 字段1 = null
- static_class
<?php class MyObject { public static $myStaticVar = 0; function myMethod() { self::$myStaticVar + ...
- static_func
<?php function testing() { static $a = 1; $a *= 2; echo $a."\n"; } testing(); testing() ...
- 在Tomcat的安装目录下conf目录下的server.xml文件中增加一个xml代码片段,该代码片段中每个属性的含义与用途
contex指上下文,实际上就是一个web项目:path是虚拟目录,访问的时候用127.0.0.1:8080/welcom/*.jsp访问网页,welcome前面要加/;docBase是网页实际存放位 ...
- nginx别名配置,状态配置,include优化
一.nginx帮助参数 下面是关于/application/nginx/sbin/nginx 的参数帮助 [root@A conf]# /application/nginx/sbin/nginx -h ...
- ImportError: no module named win32api
ImportError: no module named win32api 安装win32包就好了 pip install pypiwin32
- 剑指offer之 旋转数组的最小数字
package Problem8; public class MinInReversingList { /* * 题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. * 输入 ...
- Linux Glibc库严重安全漏洞修复方案通知(腾讯开发者社区)
如何查看当前glibc的版本号? rpm -aq | grep glibc 尊敬的用户: 您好!2015年1月28日, 腾讯云安全情报监测到LinuxGlibc库存在一处严重安全漏洞,可以 ...
- EntityFramework 学习 一 Change Tracking in Entity Framework
EntityFramework自动跟踪上下文中已经加载的实体,DbChangeTracker类给你关于当前实体的所有跟踪信息 注意,每个实体都要有EntityKey(主键)的属性,EntityFram ...