分享

学习 Python 数据结构与算法,这是我见过最友好的教程

 天承办公室 2023-09-24

Pascal 之父 Nicklaus Wirth 曾说:“程序=数据结构+算法。” 

在《算法(第4版)》中,作者也说过:“数据结构和算法的学习是计算机科学和软件工程领域的基础,它们对于解决实际问题和优化程序性能至关重要。”

数据结构与算法的重要性不言而喻,对于计算机专业的学生,更是不陌生。作为两门必学的课程,如果有同学立志做好技术,那数据结构与算法的学习是怎么都绕不开的坎。

随手搜索知乎,还是有不少人提问:“如何系统地学习数据结构与算法?”“如何在最短时间内搞定数据结构与算法,应付面试?”甚至有人问出:“数据结构与算法学起来很吃力很绝望,感觉脑子不开窍,刷题也只会简单等级的题,是不是不适合程序员这个行业?”这样的问题。

综合网上的各种问答来看,不管学习的目的是什么。数据结构与算法仍然是学生党认为的老大难课程。更有同学直接吐槽:“计算机专业全凭自学,教学知识落伍,一个 VC6.0 用一万年。”

尽管网上有很多教程,但依旧有很多初学者摸不到头绪。为了帮助初学者解决入门困难问题,今天给大家推荐一本比教材更友好的《Python数据结构与算法分析(第3版)》。
这本书是经典的计算机教材,被华盛顿大学、北京大学等多家高校采用,使用当下流行的 Python 语言,扎实的理论+丰富的案例,学习无压力。
图片

(新书上市,限时 5 折)

这本书作为用 Python 描述数据结构与算法的开山之作,向读者透彻讲解在 Python 环境下,如何通过一系列存储机制高效地实现各类算法。

内容对初学者友好,开篇介绍了基于大 O 计法的算法分析,并通篇运用,使用 Python 3 讲解,语法干净。深入浅出,理论扎实,案例丰富。每章还配有练习题,方便巩固学习。

全书六大模块,涵盖数据结构与算法的方方面面。

图片

第2版读者评价

@李銮珂:写的挺好,大二在课上学懵懵懂懂,大三下自己再看一遍感觉打通了,不过还剩下一点点尾巴没学完,明年回来补上。

@Colin:实战性非常强的一本书。抽象的数据结构和算法,结合直观形象的示意图,加上诚意十足的示例代码,一口气读下来,很多以前想做但是没什么头绪的问题,忽然就思路明朗了起来。已经用书里的思想实现了图论中的 Dijkstra 算法解决最短路径问题、Route Inspection 算法解决邮递员问题,感觉棒棒哒。但现在知道目前的水平只是初窥计算机科学的奥妙,以后要继续加油!
@东川路老实豪:B 站上面有北大陈斌老师的配套网课,配合起来学还是非常不错的。
在这里也要推荐一下北京大学陈斌老师的 B 站课程,是北京大学的课程实录。这套课程用的教材正是这本书,大家可以用图书搭配视频学习,就不用担心自己学不会了。(课程网址:
https://space.bilibili.com/275008758/channel/collectiondetail?sid=1170540)
图片

本书内容设置

全书一共 8 章内容。
第 1 章通过复习计算机科学、问题解决、面向对象编程以及 Python 来准备背景知识。基础扎实的同学可以概览第 1 章,快速进入第 2 章。

第 2 章介绍算法分析的内在思想,同时强调大 O 记法,还将分析本书一直使用的重要 Python 数据结构。这可以帮助大家理解各种抽象数据类型不同实现之间的权衡。第 2 章也包含了在运行时使用的 Python 原生类型的实验测量例子。

第 3~7 章全面介绍在经典计算机科学问题中出现的数据结构与算法。尽管在阅读顺序上并无严格要求,但是许多话题之间存在一定的依赖关系,所以应该按照本书的顺序学习。比如,第 3 章介绍栈,第 4 章利用栈解释递归,第 5 章利用递归实现二分搜索。

第 8 章是选学内容,包含彼此独立的几节。每一节都与之前的某一章有关。正如前面的组织结构图所示,既可以在学习完第 7 章以后再一起学习第 8 章中的各节内容,也可以把它们与对应的那一章放在一起学习。

图片


第 3 版内容更新

  • 源代码遵循 PEP 8 Python 编程规范。

  • 用 pythonds 3 包(其中包含众多算法以及数据结构实现)取代了 pythonds 包。

  • 书中提供的示例和代码打包放至 GitHub 仓库(psads/psadspy-src)。

  • 章末的编程练习和讨论问题合并成了练习,读者可以自行决定是否需要讨论或者实现。

  • 根据读者反馈进行了众多澄清和改正。

作译者简介

布拉德利·N. 米勒(Bradley N. Miller)美国路德学院计算机科学名誉教授,曾获美国计算机协会软件系统奖,对 Python 课程开发有深入研究,由他创立的互动式教科书平台 Runestone Interactive 与全球 600 多家教育机构有合作。

戴维·L. 拉努姆(David L. Ranum)Merative 高级科学家,医学信息学博士,致力于利用自然语言处理等人工智能技术解决医疗问题,曾在美国路德学院讲授计算机科学课程近三十载。

罗曼·亚西诺夫斯基(Roman Yasinovskyy)美国路德学院计算机科学系主任、副教授,授课范围涵盖算法、Web 开发、计算机网络、数据库管理系统、操作系统、计算机体系结构以及信息安全等课程。博士毕业于陶森大学应用信息技术专业。

译者吕能:StreamNative 计算技术负责人,开源项目 Apache Pulsar、Apache Heron 的核心贡献者。先后在浙江大学和美国加州大学洛杉矶分校取得计算机科学学士学位和硕士学位,关注分布式实时数据引擎系统的研发,热衷于普及计算机技术知识。曾任 Twitter 资深工程师。

刁寿钧:腾讯优图实验室团队 11 级工程师,毕业于复旦大学。目前聚焦于腾讯云人工智能平台的建设。曾协助组织 IMG 社区的技术沙龙活动。另译有《数据分析实战》。

大咖推荐

本书是一本必读的 Python 指南,透彻讲解了在 Python 环境下实现各类高效算法的方法。作者凝聚多年实战经验,将数据结构、递归、搜索、排序、树与图等内容生动呈现。对于所有 Python 程序员,本书是在 Python 基础上学习数据结构与算法的优秀资源,值得一读。

——崔庆才,微软(中国)工程师,《Python 3网络爬虫开发实战》作者

我一直采用本书原版教材讲授数据结构与算法课程,很高兴看到本书中文版第 3 版出版,让更多学生能够无障碍阅读这本优秀的教材。本书采用 Python 语言,深入浅出地介绍了常用的数据结构及算法,语言使用规范,案例丰富,应用情境取材广泛,很有启发性。在多年的教学实践中,本书深受学生欢迎,相信它能帮助更多 Python 学习者提升算法能力。

——陈斌,北京大学地球与空间科学学院教授,北京市高等学校教学名师


文末互动

小伙伴聊聊你在学习数据结构与算法时遇到过哪些难点,都是怎么克服的。我们会在精选留言中选出 3 位,获得赠书。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多