学习编程,数据结构是你必须要掌握的基础知识,那么数据结构到底是什么呢?
其实数据结构就是用来描述计算机里存储数据的一种数学模型,因为计算机里要存储很多乱七八糟的数据,所以也需要不同的数据结构来描述。
了解了基本概念之后,接下来我们再来看看,为什么我们要学习数据结构呢?
在许多类型的程序的设计中,数据结构的选择是一个基本的设计考虑因素。许多大型系统的构造经验表明,系统实现的困难程度和系统构造的质量都严重的依赖于是否选择了最优的数据结构。许多时候,确定了数据结构后,算法就容易得到了。有些时候事情也会反过来,我们根据特定算法来选择数据结构与之适应。不论哪种情况,选择合适的数据结构都是非常重要的。
选择了数据结构,算法也随之确定,是数据而不是算法是系统构造的关键因素。这种洞见导致了许多种软件设计方法和程序设计语言的出现,面向对象的程序设计语言就是其中之一。也就是说,选定数据结构往往是解决问题的核心,比如我们做一道算法题,往往就要先确定数据结构,再根据这个数据结构去思考怎么解题。
如果没有数据结构的基础知识,也就没有谈算法的意义了,很多时候即使你会使用一些封装好的编程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工具,整合编译、执行、测试及除错功能。强调边做边学,结合下载文件,给予最完整的支援。
作者胡昭民,由于作者长期从事信息教育及写作,在文字的表达上简洁明了、逻辑清晰,并安排了大量的习题,供读者检验学习成果。