从一个算法初学者的角度来给大家推荐一下「算法与数据结构」从入门到进阶的书单。
一.入门系列这些书籍通过图片、打比方等通俗易懂的方法来讲述,让你能达到懂一些基础算法,线性表,堆栈,队列,树,图,DP算法,背包问题等,不要求会实现,但是看过以下这些书对于之后实现算法打下坚实的思维基础。
很适合在闲暇之余拿出来阅读一番。
1.1 《啊哈!算法》阅读链接:https://book.douban.com/subject/25894685/
这不过是一本有趣的算法书而已。和别的算法书比较,如果硬要说它有什么特点的话,那就是你能看懂它。
推荐理由: 本书中涉及到的数据结构有栈、队列、链表、树、并查集、堆和图等;涉及到的算法有排序、枚举、深度和广度优先搜索、图的遍历,当然还有图论中不可以缺少的四种最短路径算法、两种最小生成树算法、
割点与割边算法、二分图的最大匹配算法等
阅读链接:https://book.douban.com/subject/26979890/
推荐理由:这本图解书很容易看懂,不枯燥。
书中的前三章将帮助你打下基础,带你学习二分查找、大O表示法、两种基本的数据结构以及递归等。余下的篇幅将主要介绍应用广泛的算法,具体内容包括:面对具体问题时的解决技巧,比如,何时采用贪婪算法或动态规划;散列表的应用;图算法;K最近邻算法。
阅读链接:https://book.douban.com/subject/4710825/
推荐理由:理论与实践相结合,旨在帮助读者理解算法,并提高C语言编程能力,培养读者的编程兴趣,并巩固已有的C语言知识。
1.4《趣学算法》阅读链接:https://book.douban.com/subject/27109832/
推荐理由:非常好的一本书,图解多,思路清晰,不仅讲了问题分析算法设计的过程,还讲了如何优化算法,
使读者体验算法的奥妙
阅读链接:https://book.douban.com/subject/6424904/
推荐理由:文中附有大量插图,适合对大段文字提不起兴趣的朋友。
以一个计算机教师教学为场景,讲解数据结构和相关算法的知识。通篇以一种趣味方式来叙述,大量引用了各种各样的生活知识来类比,并充分运用图形语言来体现抽象内容,对数据结构所涉及到的一些经典算法做到逐行分析、多算法比较。与市场上的同类数据结构图书相比,本书内容趣味易读,算法讲解细致深刻,是一本非常适合自学的读物。
慕课网链接:https://coding.imooc.com/class/71.html
推荐理由:视频课程,这样精致的课程很难找到第二个,我暂时还没看过比这个课程能更好的进行算法入门了,小吴的PPT制作动画灵感就是来源于此。
二.基础系列通过基本入门算法书的调教,你已经逐渐体会到了算法的魅力,现在正是时候去阅读基础系列踏入算法的领域!!!
这些书籍需要你费点心思去阅读。
2.1《算法导论中文版》阅读链接:https://book.douban.com/subject/20432061/
排在基础系列第一的位置应该没意见吧:)
推荐理由:本书将严谨性和全面性融为一体,深入讨论各类算法,并着力使这些算法的设计和分析能为各个层次的读者接受。
2.2《数据结构与算法 Java版》阅读链接:https://book.douban.com/subject/21519616/
适合想通过Java语言来学习算法的小伙伴们。
推荐理由:本书把算法分析与最有效率的Java程序的开发有机地结合起来,深入分析每种算法,内容全面、缜密严格,并细致讲解精心构造程序的方法。
2.3《数据结构与算法:Python语言描述》阅读链接:https://book.douban.com/subject/26702568/
适合想通过Python语言来学习算法的小伙伴们。
推荐理由:本书基于Python语言介绍了数据结构与算法的基本知识,主要内容包括抽象数据类型和Python面向对象程序设计、线性表、字符串、栈和队列、二叉树和树、集合、排序以及算法的基本知识。本书延续问题求解的思路,从解决问题的目标来组织教学内容,注重理论与实践的并用。
2.4《学习JavaScrit数据结构与算法(第2版)》阅读链接:https://book.douban.com/subject/26639401/
适合想通过JavaScrit语言来学习算法的小伙伴们。
推荐理由:本书首先介绍了JavaScript语言的基础知识,接下来讨论了数组、栈、队列、链表、集合、字典、散列表、树、图等数据结构,之后探讨了各种排序和搜索算法,包括冒泡排序、选择排序、插入排序、归并排序、快速排序、顺序搜索、二分搜索,还介绍了动态规划和贪心算法等常用的高级算法及相关知识。
2.5《数据结构与算法分析:C语言描述(原书第2版)》阅读链接:https://book.douban.com/subject/1139426/
适合想通过C语言来学习算法的小伙伴们。