一份程序员必备的经典算法书单
点击标题下「异步社区」可快速关注
当我们在工作中使用算法时,通常都是希望能更有效地解决问题、使程序运行得更快,并且让解决方案变得更为简短。但实际情况如何呢?我们获得所需要的效率、速度和简洁性了吗?为什么人们在使用Python这种语言时依然要在乎这些事呢?选择这种语言对于追求高速度的人来说是一个好的开端吗?为什么不选择C或Java这样的语言呢?
首先,可能是因为Python语言本身很讨人喜欢,以至于人们不想换别的语言,或者他们目前也没有更好的选择。但最为重要的可能还是第二点,即在这里,算法设计者们首先要担心的并不是常数级别的性能差异。即便相关程序完成任务所需要的时间是另一程序的两倍,甚至十倍,但这样的速度可能依然是够快的。况且,那个较慢的程序中可能恰好有某些我们所需要的特性,如它可能有更好的可读性。而调整和优化程序在很多时候会非常费劲,其代价是不容小视的。然而,无论选择什么语言,我们都得考虑一下程序自身的弹性问题。也就是说,如果我们将程序的输入量翻倍,会发生什么呢?程序运行时间会是之前的两倍?四倍?还是更多?或者即便增加那么一丁点的输入量也会导致程序运行时间的成倍增长?当您遇到的问题足够大的时候,这样的性能差异显然就不能再靠简单的语言选择或硬件选择来解决了。在面对一个“足够大”的问题时,我们能抑制运行时间增长的主要武器就只有——您猜对了——一份扎实的算法设计功底了。
今天小编带来了一份诚意算法书单。
算法篇
重磅新书
《Python神经网络编程》
[英] 塔里克·拉希德(Tariq Rashid)著
当前,深度学习和人工智能的发展和应用给人们留下了深刻的印象。神经网络是深度学习和人工智能的关键元素,然而,真正了解神经网络工作机制的人少之又少。本书用轻松的笔触,一步一步揭示了神经网络的数学思想,并介绍如何使用Python编程语言开发神经网络。本书将带领您进行一场妙趣横生却又有条不紊的旅行——从一个非常简单的想法开始,逐步理解神经网络的工作机制。您无需任何超出中学范围的数学知识,并且本书还给出易于理解的微积分简介。
本书为美亚五星畅销书,备受关注。基于Python3.5,全彩印刷,如果只选一本神经网络图书,他是首选。
算法篇
入门级
《趣学算法》
陈小玉 著
本书从算法之美娓娓道来,没有高深的原理,也没有枯燥的公式,通过趣味故事引出算法问题,包含50多个实例及完美图解,结合学生提问,分析算法本质,并给出代码实现的详细过程和运行结果。
本书可作为程序员的学习用书,也适合从未有过编程经验但又对算法有强烈兴趣的初学者使用,同时也可作为高等院校计算机、数学及相关专业的师生用书和培训学校的教材。
《算法学习与应用从入门到精通》
张玲玲 著
本书的特色是实现了入门知识、实例演示、范例演练、技术解惑、综合实战5大部分内容的融合,让读者看得懂、用得上、学得会。
一本书的容量,讲解了入门类、范例类和项目实战类三类图书的内容。丰富的配套资源 ,学习更高效。
320个实例,更多的实践演练机会753分钟视频讲解,降低学习难度5个综合案例,项目实战演练74个技术解惑,破解学习难点“技术讲解”→范例演练”→“技术解惑”贯穿全书,全面掌握算法应用技术讲解:通过320个实例,循序渐进地讲解了算法应用的各个知识点。范例演练: 5个综合实例,使读者具有应用算法解决实际项目的能力。技术解惑:把容易混淆的概念单独讲解和剖析,帮助读者绕过学习中的陷阱。
《文本上的算法——深入浅出自然语言处理 》
路彦雄 著
微信整合搜索算法组组长路彦雄全新作品,深入浅出讲解自然语言处理和机器学习技术,微博总阅读量超30万次。
本书结合作者多年学习和从事自然语言处理相关工作的经验,力图用生动形象的方式深入浅出地介绍自然语言处理的理论、方法和技术。本书抛弃掉繁琐的证明,提取出算法的核心,帮助读者尽快地掌握自然语言处理所必备的知识和技能。本书适合从事自然语言处理相关研究和工作的读者参考,尤其适合想要了解和掌握机器学习或者自然语言处理技术的读者阅读。
《算法谜题》
【美】Anany Levitin 著
算法是计算机科学领域最重要的基石之一。算法谜题,就是能够直接或间接地采用算法来加以解决的谜题。求解算法谜题是培养和锻炼算法思维能力一种最有效和最有乐趣的途径。
本书是一本经典算法谜题的合集。本书包括了一些古已有之的谜题,数学和计算机科学有一部分知识就发源于此。本书中还有一些较新的谜题,其中有一部分谜题被用作知名IT企业的面试题。全书可分为4个部分,分别是概览、谜题、提示和答案。概览介绍了算法设计的通用策略和算法分析的技术,还附带有不少的实例。谜题部分将谜题按照简单、中等难度和较难三个层级分别列出。提示部分依次给出谜题提示,帮助读者找到正确的解题方向,同时仍然为读者留下了独立求解的空间。答案部分则给出了谜题的详细解答。
《编程之法:面试和算法心得》
July 著
-蜕变于CSDN技术博客“结构之法算法之道”
-内容涉及面试、算法、机器学习三大主题
-作者数年的积累成果
-进入IT行业求职笔试和面试宝典
本书涉及面试、算法、机器学习三个主题。书中的每道编程题目都给出了多种思路、多种解法,不断优化、逐层递进。第1章至第6章分别阐述字符串、数组、树、查找、动态规划、海量数据处理等相关的编程面试题和算法,第7章介绍机器学习的两个算法—K近邻和SVM。
此外,每一章都有“举一反三”和“习题”,以便读者及时运用所学的方法解决相似的问题,且在附录中收录了语言、链表、概率等其他题型。书中的每一道题都是面试的高频题目,反复出现在近5年各大公司的笔试和面试中,对面试备考有着极强的参考价值。
编程篇
Python
《Python核心编程(第3版)》
【美】Wesley Chun(卫斯理 春)著
畅销经典的Python书,兼顾Python2和Python3,Python开发人员的案头常备
Python是一种灵活、可靠且具有表现力的编程语言,它将编译语言的强大与脚本语言的简洁性、快速开发特性整合起来。在本书中,Python开发人员兼企业培训师Wesley Chun会帮助您将Python技能提升到更高的水平。
本书涵盖了成为一名技术全面的Python开发人员所需的一切内容。本书讲解了应用开发相关的多个领域,而且书中的内容可以立即应用到项目开发中。此外,本书还包含了一些使用Python 2和Python 3编写的代码案例,以及一些代码移植技巧。有些代码片段甚至无须修改就可以运行在Python 2.x或Python 3.x上。
《Python程序设计(第3版)》
【美】John Zelle(策勒)著
Python之父作序推荐 ,Python 3 编程入门经典。本书以Python语言为工具教授计算机程序设计。本书强调解决问题、设计和编程是计算机科学的核心技能。本书特色鲜明、示例生动有趣、内容易读易学,适合Python入门程序员阅读,也适合高校计算机专业的教师和学生参考。
《数据结构 Python语言描述》
【美】Kenneth A. Lambert(兰伯特) 著
在计算机科学中,数据结构是一门进阶性课程,概念抽象,难度较大。Python语言的语法简单,交互性强。用Python来讲解数据结构等主题,比C语言等实现起来更为容易,更为清晰。
《Python编程快速上手 让繁琐工作自动化》
【美】Al Sweigart(斯维加特) 著
Python3编程从入门到实践,新手学习必备用书。美亚畅销Python编程入门书。
本书快速教读者掌握Python这一对初学者友好的语言。书中包含了很多实用的示例,供读者学习和联系。通过本书,可以学会解决很多实际的任务和需求,包括在一个或多个文件中搜索文本模式、通过创建修改移动和重命名文件和文件夹来组织计算机、抓取数据和信息、更新Excel表格、自动发送邮件和文本消息、组织计算机执行周期性任务等等。
算法篇
机器学习
《Python机器学习——预测分析核心算法》
【美】Michael Bowles(鲍尔斯) 著
在学习和研究机器学习的时候,面临令人眼花缭乱的算法,机器学习新手往往会不知 所措。本书从算法和Python 语言实现的角度,帮助读者认识机器学习。
本书专注于两类核心的“算法族”,即惩罚线性回归和集成方法,并通过代码实例来 展示所讨论的算法的使用原则。全书共分为7 章,详细讨论了预测模型的两类核心算法、预测模型的构建、惩罚线性回归和集成方法的具体应用和实现。 本书主要针对想提高机器学习技能的Python 开发人员,帮助他们解决某一特定的项 目或是提升相关的技能。
《Python算法教程》
【挪威】Magnus Lie Hetland(赫特兰) 著
畅销书Python基础教程(第2版)作者、Python领域大牛又一新力作!知识点清晰,语言简洁。本书用Python语言来讲解算法的分析和设计,主要关注经典的算法,帮助读者理解基本算法问题和解决问题打下很好的基础。蕴含大量课后习题和参考资料。
《Python机器学习实践指南》
【美】Alexander T. Combs 著
机器学习是近年来渐趋热门的一个领域,同时Python 语言经过一段时间的发展也已逐渐成为主流的编程语言之一。
本书结合了机器学习和Python 语言两个热门的领域,通过利用两种核心的机器学习算法来将Python 语言在数据分析方面的优势发挥到极致。 全书共有10 章。第1 章讲解了Python 机器学习的生态系统,剩余9 章介绍了众多与机器学习相关的算法,包括各类分类算法、数据可视化技术、推荐引擎等,主要包括机器学习在公寓、机票、IPO 市场、新闻源、内容推广、股票市场、图像、聊天机器人和推荐引擎等方面的应用。 本书适合Python 程序员、数据分析人员、对算法感兴趣的读者、机器学习领域的从业人员及科研人员阅读。
《神经网络算法与实现——基于Java语言》
Alan M.F. Souza(艾伦)著
神经网络已成为从大量原始的,看似无关的数据中提取有用知识的强大技术。 Java语言是用于实现神经网络的最合适的工具之一,也是现阶段非常流行的编程语言之一,包含多种有助于开发的API和包,具有“一次编写,随处运行”的可移植性。
本书完整地演示了使用Java开发神经网络的过程,既有非常基础的实例也有高级实例。首先,你将学习神经网络的基础知识、感知机及其特征。 然后,你将使用学到的概念来实现自组织映射网络。 此外,你还会了解一些应用,如天气预报、疾病诊断、客户特征分析和光学字符识别(OCR)等。 最后,你将学习实时优化和自适应神经网络的方法。