关注公众号“程序员书单”

加个“星标”,每天带你读好书!

学习编程,数据结构是你必须要掌握的基础知识,那么数据结构到底是什么呢?

其实数据结构就是用来描述计算机里存储数据的一种数学模型,因为计算机里要存储很多乱七八糟的数据,所以也需要不同的数据结构来描述。

了解了基本概念之后,接下来我们再来看看,为什么我们要学习数据结构呢?

在许多类型的程序的设计中,数据结构的选择是一个基本的设计考虑因素。许多大型系统的构造经验表明,系统实现的困难程度和系统构造的质量都严重的依赖于是否选择了最优的数据结构。许多时候,确定了数据结构后,算法就容易得到了。有些时候事情也会反过来,我们根据特定算法来选择数据结构与之适应。不论哪种情况,选择合适的数据结构都是非常重要的。

选择了数据结构,算法也随之确定,是数据而不是算法是系统构造的关键因素。这种洞见导致了许多种软件设计方法和程序设计语言的出现,面向对象的程序设计语言就是其中之一。也就是说,选定数据结构往往是解决问题的核心,比如我们做一道算法题,往往就要先确定数据结构,再根据这个数据结构去思考怎么解题。

如果没有数据结构的基础知识,也就没有谈算法的意义了,很多时候即使你会使用一些封装好的编程api,但你却不知道其背后的实现原理,比如hashmap,linkedlist这些Java里的集合类,实际上都是JDK封装好的基础数据结构。

所以,对于程序员来说,数据结构是绕不过的一个基础,今天我们要推荐的就是一份能够帮助大家学好数据结构的书单。

数据结构书单

大话数据结构

《大话数据结构》为超级畅销书《大话设计模式》作者程杰潜心三年推出的扛鼎之作!以一个计算机教师教学为场景,讲解数据结构和相关算法的知识。

通篇以一种趣味方式来叙述,大量引用了各种各样的生活知识来类比,并充分运用图形语言来体现抽象内容,对数据结构所涉及到的一些经典算法做到逐行分析、多算法比较。与市场上的同类数据结构图书相比,本书内容趣味易读,算法讲解细致深刻,是一本非常适合自学的读物。

作者简介

程杰,一个被读者誉为很适合写IT技术书的家伙。《大话设计模式》作者。此书07年末出版至今已经简体版印刷9次、繁体版印刷6次,取得了较好的成绩,开创了一种适合国人阅读的趣味讲解IT知识的风格模式。

趣学数据结构

本书基于C++语言编写,从趣味故事引入算法复杂性计算及数据结构基础内容,涵盖线性结构、树形结构和图形结构,包括链表、栈和队列、树和图的应用等。本书内容还涉及数据结构的基本应用(包括各种查找、排序等)和高级应用(包括优先队列、并查集、B-树、B+树和红黑树等)。

通过大量图解将抽象数据模型简单通俗化,语言表述浅显易懂,并结合有趣的实例帮助读者轻松掌握数据结构。

作者简介

陈小玉,南阳理工学院副教授,高级程序员,研究方向为智能计算、数据挖掘与机器学习,主要讲授“算法设计与分析”和“人工智能”等课程,多次指导学生获得ACM程序设计大赛亚洲区奖项。

Python数据结构与算法分析

了解数据结构与算法是透彻理解计算机科学的前提。随着Python日益广泛的应用,Python程序员需要实现与传统的面向对象编程语言相似的数据结构与算法。

本书是用Python描述数据结构与算法的开山之作,汇聚了作者多年的实战经验,向读者透彻讲解在Python环境下,如何通过一系列存储机制高效地实现各类算法。通过本书,读者将深刻理解Python数据结构、递归、搜索、排序、树与图的应用,等等。

【作者介绍】
布拉德利·米勒(Bradley N. Miller)美国路德学院计算机科学名誉教授,曾获美国计算机协会软件系统奖,对Python课程开发有深入研究,由他创立的互动式教科书平台Runestone Interactive与全球600多家教育机构有合作。
戴维·拉努姆(David L. Ranum)IBM Watson认知软件工程师,医学信息学博士,致力于利用自然语言处理等人工智能技术解决医疗问题,曾在美国路德学院讲授计算机科学课程近三十载。

图解数据结构:使用Java(其他语言版本也有)

这是一本以Java程序语言实战来解说数据结构概念的教材。全书内容浅显易懂,利用大量且丰富的图示与范例,详解复杂的抽象理论,从最基本的数据结构概念开始说明,再以Java工具加以诠释阵列结构、堆栈、链表、队列、排序、查找等重要的概念,引领读者抓住重点轻松进入数据结构的学习领域。

《图解数据结构:使用Java》内容架构完整,逻辑清楚,采用丰富的图例来阐述基本概念及应用,有效提升可读性。以Java程序语言实现数据结构中的重要理论,以范例程序说明数据结构的内涵。采用“Eclipse”Java ID工具,整合编译、执行、测试及除错功能。强调边做边学,结合下载文件,给予最完整的支援。

作者胡昭民,由于作者长期从事信息教育及写作,在文字的表达上简洁明了、逻辑清晰,并安排了大量的习题,供读者检验学习成果。

今日问题

你是如何入门和学习数据结构的呢?

学好程序员必知必会的数据结构,这一份书单你值得拥有!相关推荐

  1. 2022年程序员开工第一周,应该收藏这样一份书单

    新年新气象,开工第一周,作为程序员的你有哪些新年规划?如果还没准备好,不如小编来一份开工书单,开始你的学习旅程吧! 开工后,有哪些新书最受欢迎? 1.计算之魂 (<数学之美><浪潮之 ...

  2. 程序员应知必会的思维模型之 18 林纳斯定律 (Linus‘s Law)

    林纳斯定律 (Linus's Law) 足够多的眼睛,就可让所有问题浮现.–Eric S. Raymond 简单地说,能够看到问题的人越多,有人解决过相关的问题或事情的可能性就越高. 最初该定律是用来 ...

  3. 程序员应知必会的思维模型之 7 邓巴数字 (Dunbar‘s Number)

    邓巴数字 (Dunbar's Number) 邓巴数字是对一个人能够保持稳定社会关系的人数的认知极限--在这种关系中,一个人知道每个人是谁,也知道每个人与其他人的关系如何.而对这一数字的确切值则有着一 ...

  4. 程序员应知必会的思维模型之 25 普特定律 (Putt‘s Law)

    普特定律 (Putt's Law) 技术由两类人主导,一类是纯粹的管理人员, 一类是纯粹的技术人员. 普特定律常常遵循普特推论: 每一个技术层次,假以时日,能力将逆转. 这些结论表明,由于各种选择标准 ...

  5. 程序员应知必会的思维模型之 19 梅特卡夫定律 (Metcalfe‘s Law)

    梅特卡夫定律 (Metcalfe's Law) 在网络理论中,系统的价值约等于系统用户数的平方. 这个定律基于一个系统中可能的连接对数量,并且与里德定律 (Reed's Law) 十分相近.奥德利兹科 ...

  6. 程序员应知必会的思维模型之 15 技术成熟度曲线 (The Hype Cycle or Amara‘s Law)

    技术成熟度曲线 (The Hype Cycle or Amara's Law) 我们倾向于过高估计技术在短期内的影响,并低估长期效应.–罗伊·阿马拉 (Roy Amara) 技术成熟度曲线是高德纳咨询 ...

  7. 程序员应知必会的思维模型之 23 帕金森定理 (Parkinson‘s Law)

    帕金森定理 (Parkinson's Law) 在工作能够完成的时限内,工作量会一直增加,直到所有可用时间都被填满为止. 基于官僚机构的研究背景,该定律被应用于软件开发中.该理论认为,团队在截止日期之 ...

  8. 程序员应知必会的思维模型之 21 墨菲定律 (Murphy‘s Law / Sod‘s Law)

    墨菲定律 (Murphy's Law / Sod's Law) 凡是可能出错的事就一定会出错 出自 爱德华·A·墨菲 , 墨菲定律 说明了如果一件事有可能出错,那么就一定会出错. 这是一句开发人员间的 ...

  9. 程序员应知必会的思维模型之 3 破窗效应 (The Broken Windows Theory)

    破窗效应 (The Broken Windows Theory) 在破窗理论中认为,一些明显的犯罪迹象(或缺乏环保意识)会导致进一步的.更严重的犯罪(或环境的进一步恶化). 软件领域应用 破窗理论已应 ...

最新文章

  1. Multi-Task Learning的几篇综述文章
  2. DotNet Framework源代码调试问题
  3. .net你不行——是你的父亲把你封装的太死,还是你的子孙们太懒,未把你发扬光大。...
  4. oracle中导出的sql文件转入mysql中的工作记录
  5. 通向架构师的道路(第七天)之漫谈使用ThreadLocal改进你的层次的划分
  6. 使用SPANN方式将Spring&Quartz与自定义注释集成
  7. 安卓手机移动端页面为body设置overflow:hidden;不起作用
  8. Hibernate--使用xml配置映射关系
  9. 阿里云的羊毛如何薅?创业者看过来!
  10. poj 1502 MAPMaelstrom 单源最短路dijkstra
  11. 18、OpenCV Python 简单实现一个图片生成(类似抖音生成字母人像)
  12. 最适合人工智能开发的5种编程语言首选Python的原因
  13. 计算机系统时间错了,电脑时间同步出错怎么办
  14. xposed模块开发步骤总结
  15. 声明:博客内容不得用于商业用途,仅做学习交流。
  16. iOS 修改文字大小以适配lable高度宽度
  17. gcore调试一个并发问题
  18. 最全Pycharm教程(3)——代码的调试、运行
  19. 多智能体强化学习综述-Lucian Busoniu
  20. 搭建VNC远程桌面服务

热门文章

  1. c语言strcpy函数的示例,c语言中的strcpy函数讨论
  2. LVGL 之 windows 上 lvgl 模拟器基于 Visual Studio 搭建方法的简单整理
  3. Khadas VIM3开发板固件烧写记录
  4. 地砖中间高四边低_地砖与墙砖之间的缝太大了,该怎么办?
  5. (转)价内税与价外税的区别
  6. 大家都在讨论华为OD?它到底怎么样
  7. 开源create-poster海报生成组件,客户用了都给我加鸡腿(图片又快又清晰,还能早点下班)
  8. 转一位好友的《中国软件业的断想》
  9. springboot毕设项目分布式生鲜市场信息系统设计与实现284o7(java+VUE+Mybatis+Maven+Mysql)
  10. CRM软件是什么?为什么使用它?