数据结构与算法书籍推荐_数据结构和算法书籍_salmon_zhang的博客-程序员宝宝

技术标签: 算法  数据结构书单  数据结构与算法书  算法书籍  数据结构与算法  数据结构  

学习数据结构与算法,还是很有必要看几本相关的书籍,但根据不同基础的人,合适看的书也不一样,因此,针对不同层次、不同语言的人,推荐几本市面上口碑不错的书。

1. 入门级

针对刚入门的同学,建议不要急着去看那些经典书,像《算法导论》、《算法》这些比较经典、权威的书。虽然书很好,但看起来很费劲,如果看不完,效果会很不好。所以建议先看两本入门级的趣味书:

  1. 《大话数据结构》
  2. 《算法图解》

大话数据结构

将理论讲的很有趣,不枯燥。作者结合生活中的例子去对每个数据结构和算法进行讲解,让人通俗易懂。

算法图解

这是一本像小说一样有趣的算法入门书,书中有大量的图解,通俗易懂。

看完上面一本或两本入门级的书,你就会对数据结构和算法有个大概认识和学习。但这些入门级的书缺少细节、不够系统。所以想要深入的学习数据结构和算法,光看这两本书肯定是不够的。

2. 不同语言的教科书

国内外很多大学都是将《数据结构和算法分析》作为教科书。这本书非常系统、严谨、全面,难度适中,很适合对数据结构和算法有些了解,并且已经掌握了至少一门语言的同学学习。针对不同的语言,分别有:

  1. 《数据结构与算法分析:C语言描述》

  2. 《数据结构与算法分析:C++描述》

  3. 《数据结构与算法分析:java语言描述》

如果你不会C、C++、java,会Python或者JavaScript,可以看:

  1. 《数据结构与算法JavaScript描述》

  2. 《数据结构与算法:Python语言描述》

3. 面试书籍

现在很多大厂的面试都会考算法题,这里推荐几本面试算法书籍:

  1. 《剑指offer》

  2. 《编程珠玑》

  3. 《编程之美》

剑指offer

为面试算法量身定做的一本书。几乎包含了所有常见的、经典的面试题,如果能搞懂书里面的内容,一般公司的算法面试都应该没问题。

编程珠玑

这本书豆瓣评分有9分,评分很高。这本书最大的特色是讲了很多海量数据的处理技巧。其他算法书籍很少涉及海量数据。

编程之美

有些作者是微软工程师,算法题目较难,比较适合要面试Google、Facebook这样的公司的人去看。

4. 经典书籍

现在数据结构与算法最经典的书籍就是:

  1. 《算法导论》

  2. 《算法》

  3. 《计算机程序设计艺术》

这三本书非常经典,但都很厚,看起来比较费劲,估计很少有人能全部看完。但如果想更深入地学一遍数据结构和算法,还是建议去看看。

算法导论

章节安排不是循序渐进,里面有各种算法正确性、复杂度的证明、推导,对数学功底有一定要求,看起来有些费劲。

算法

偏重讲算法。内容不够全面,对数据结构方面的知识讲的不多,动态规划这么重要的知识点却没有讲。

计算机程序设计艺术

这本书包括很多卷,相比于其他书籍有更好的深度、广度、系统性和全面性。但如果你对数据结构和算法不是特别感兴趣,没有很好的数学、算法、计算机基础,很难把这本书读完、读懂。

5. 课外阅读

有些算法书籍也比较适合在平时悠闲的时候翻翻看看:

  1. 《算法帝国》

  2. 《数学之美》

  3. 《算法之美》

这些书都列举了大量的列子来解释说明,非常通俗易懂。

下面给出一张上面推荐的数据结构与算法书籍的思维导图:
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/salmon_zhang/article/details/88603207

智能推荐

【AQS】_我是廖志伟的博客-程序员宝宝

AQS的全称是AbstractQueuedSynchronizer,也就是抽象队列同步器,它是在java.util.concurrent.locks包下的,也就是JUC并发包。java提供了synchronized关键字内置锁,还提供了显示锁,而大部分的显示锁的底层都用到了AQS,比如只有一个线程能执行ReentrantLock独占锁,又比如多个线程可以同时执行共享锁Semaphore、CountDownLatch、ReadWriteLock、CyclicBarrier。AQS使用模板方法模式,使用者继.

Android Studio中使用NDK/JNI_极锋战狼的博客-程序员宝宝

Android Studio中使用NDK/JNI之前试过用eclipse配置过NDK/JNI,现在基本开发用Android Studio了,所有现在也用AS配置下。1. 下载NDK,配置NDK。从网上下载NDK包,解压,放到自己喜欢的位置。我是放到sdk目录下了。打开AS,先随便打开个项目,依次点击:File ->ProjectStructure,然后如下图,选择ndk到你解压的路径。这样第一步就好

Microsoft.CSharp.dll程序集的作用_sinolover的博客-程序员宝宝

《C#与.NET 4高级程序设计:第5版》第18章动态类型和动态语言运行时,本章,我们将学习dynamic关键字的方方面面,理解如何使用DLR (Dynamic Language Runtime,动态语言运行时)将松散的类型映射到正确的内存对象。理解了DLR提供的诸多服务之后,你将看到一些示例,它们使用动态类型来简化后期绑定方法的调用(通过反射服务)并且可以方便地与遗留的COM库进行通信。本节为大...

C#中 ??、 ?、 ?: 、?.、?[ ]_weixin_30929195的博客-程序员宝宝

1. 可空类型修饰符(?)引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空。 例如:string str=null; 是正确的,int i=null; 编译器就会报错。 为了使值类型也可为空,就可以使用可空类型,即用可空类型修饰符"?"来表示,表现形式为"T?" 例如:int? 表示可空的整形,DateTime? 表示可为空的时间。 T? 其实是System.Nullable(泛...

「 Redis 」 SkipList 跳表底层实现及应用_skiplist结构_FrozenPenguin的博客-程序员宝宝

跳表(SkipList,全称跳跃表)是用于有序元素序列快速搜索查找的一个数据结构,跳表是一个随机化的数据结构,实质就是一种可以进行二分查找的有序链表。跳表在原有的有序链表上面增加了多级索引,通过索引来实现快速查找。

【Redis-6.0.8】Redis中的跳表_我要精通C++的博客-程序员宝宝

1.引用及学习链接B站跳表相关视频1B站跳表相关视频2微信读书《Redis 5设计与源码分析》跳表相关内容2.

随便推点

记一下Oracle9i的下载地址_benwdm的博客-程序员宝宝

今天需要装个Oracle9i服务器,没有介质,上官网找了找,发现已经没有9i的下载地址了,现在只有10g和11g的下载链接。看来Oracle已经不想让人再用Oracle9i了。我偏不信这个邪,在网上搜了一下,还真让我找着了。为了免得以后用到再去找,随手记下来,也方便一下有需要的童鞋。       目前的版本是9.2.0.1           For   Windows     http:...

[转]一个月赚5万美元--国产共享软件开发者周奕_diegui9005的博客-程序员宝宝

程序员这个名字给许多人的第一感觉就是:埋头苦干,不抬头看路。  第一次见到周奕,正是这种感觉。  当时,我在一个好朋友的公司里,他说等会有一个程序高手会来,要给我介绍一下。不出所料,一见面,就是那种大家都能想出来的程序员形象:背着一个笔记本电脑包,一副没有睡醒的模样。我站在他身边看他写程序,见他笨的要死,用笔记本电脑的触摸板,一个像素一个像素地画图标。我问他为什么...

《Objective-C 高级编程》读书笔记之 ARC_A957270185的博客-程序员宝宝

前言本文作为《Objective-C 高级编程》读书笔记的第一篇,给大家带来的是关于 ARC(Automatic Reference Counting)自动引用计数的知识点总结。概念顾名思义,ARC(Automatic Reference Counting)— 自动引用计数,是指内存管理中对引用采取自动计数的技术。以下摘自苹果的官方文档:Automatic

PLM基本概念收集_lppplm_oscar999的博客-程序员宝宝

1. PLM是什么?2. PLM能干什么?3. PLM如何使用?4. PLM如何用编程语言实现?  ERP:企业资源规划系统SCM:供应链管理系统CRM:客户关系管理系统PLM:产品生命周期管理系统 PML定义:PLM(Produc

转 -- Quest产品FogLight介绍_foglight mysql_edwzhang的博客-程序员宝宝

原址如下:http://blog.csdn.net/ant_yan/article/details/5061522Quest产品FogLight介绍导言:FogLight是Quest公司旗下的一款可以实时对软件的数据进行监控分析的软件,由于之前完成的一个项目要针对FogLight做扩展开发,对FogLight的体系结构和功能进行了深入理解和研究,现在整理出一些自己的理解和经验,跟大

推荐文章

热门文章

相关标签