【图书推荐】《图解Java数据结构与算法(微课视频版)》

内容简介

本书系统、全面地介绍数据结构的基础理论与算法设计,精选数据结构考研习题和各类典型例题进行讲解,案例和课后习题丰富,突出对数据结构算法实践能力的培养。本书算法均采用Java语言实现,示例代码可直接上机运行。

本书配套资源丰富,包括示例源码、PPT课件、教学视频、教学大纲、习题与答案等。

本书共分11章,内容包括数据结构与算法概述,线性表,栈和队列,串、数组和广义表,树,图,查找算法,排序算法,分治算法,贪心算法,回溯算法。

适合读者

本书适合Java数据结构初学者,可作为高等院校计算机、软件工程等相关专业数据结构课程的教材,也可作为计算机软件开发、准备计算机专业研究生考试、参加各类算法竞赛、准备计算机软件资格考试的人员的参考用书。

作者简介

陈锐,郑州轻工业大学校聘副教授、硕士生导师,博士。中国人工智能学会情感智能专委会委员、中国图象图形学学会人机交互专委会委员。有多年教学实践经验,熟悉数据结构与算法等内容,出版相关图书:《Python数据结构与算法(微课视频版)》《Python机器学习实践》《数据结构习题精解(C语言实现+微课视频)》《数据结构(C语言实现)》《零基础学数据结构》《C/C++函数与算法速查大辞典》。

前言

随着软件人才发展成为国家发展战略,全国各行业对软件人才的需求量持续增加,尤其是关键领域的高端人才需求更加迫切,这对软件工程、计算机科学与技术等相关专业的人才培养质量提出了更高的要求。而数据结构作为高等院校软件工程、计算机科学与技术等相关专业的一门重要的专业基础课程,不仅是学习算法设计与分析、操作系统、人工智能、机器学习等课程的重要基础,也是软件开发者的必备知识,对软件设计的发展起着举足轻重的作用。

结合多年来的教学实践经验与软件工程专业人才培养目标,针对目前学生学习数据结构存在的缺乏动手实践的问题,本书理论与实践并重,在讲解理论的同时,筛选计算机考研试题、竞赛试题,配合丰富的图表进行讲解,并提供完整的算法实现。同时,考虑到软件行业的发展趋势和岗位需求以Java软件工程师居多的情况,本书所有算法均采用Java语言实现,从而实现教学与实际应用无缝衔接。

本书系统地讲解了数据结构中的线性结构、树形结构、图结构及查找、排序、分治算法、贪心算法、回溯算法,阐述了各种数据结构的逻辑关系,讨论了它们在计算机中的存储表示及其运算。本书理论与实践并重,选取的案例丰富、典型,每一章均提供涵盖所有知识点的综合应用实例,课后习题题型多样,涵盖知识点丰富,并且选取了部分考研试题,以巩固所学的知识点。本书采用Java语言作为描述语言,有详细的讲解和注释,所有代码均上机调试通过,并给出程序的运行结果。

本书内容

本书共11章,分别为数据结构与算法概述,线性表,栈与队列,串、数组与广义表,树和二叉树,图,查找,排序,分治算法,贪心算法和回溯算法。

第1章向刚接触数据结构的读者介绍数据结构是什么,以及本书的学习目标、学习方法和学习内容;另外,还介绍本书对算法的描述方法。

第2章主要介绍线性表。首先讲解线性表的逻辑结构,然后介绍线性表的各种常用存储结构,在每一节均给出了算法的具体应用。通过学习这一章,读者可以掌握顺序表、链表的基本运算及典型应用。

第3章主要介绍操作受限的线性表——栈和队列,内容包括栈和队列的定义、存储结构、基本运算以及栈与递归的转换、栈和队列的典型应用。

第4章主要介绍串、数组与广义表。首先介绍串的概念、存储表示、串的模式匹配算法;然后介绍数组的概念、数组(矩阵)的存储结构及运算、特殊矩阵;最后介绍广义表的概念、存储方式与基本操作。

第5章主要介绍非线性数据结构——树和二叉树。首先介绍树和二叉树的概念,然后介绍树和二叉树的存储表示,二叉树的性质,二叉树的遍历和线索化,树、森林与二叉树的转换,并查集以及哈夫曼树。

第6章主要介绍非线性数据结构——图。首先介绍图的概念和存储结构,然后介绍图的遍历、最小生成树、拓扑排序、关键路径及最短路径。

第7章主要介绍数据结构的常用技术——查找。首先介绍查找的概念,然后结合具体实例介绍静态查找、动态查找以及哈希查找的算法及实现。

第8章主要介绍数据结构的常用技术——排序。首先介绍排序的相关概念,然后介绍插入排序、交换排序、选择排序、归并排序以及基数排序,并给出了具体实现算法。

第9章主要介绍分治算法。首先介绍分治算法的思想,然后针对最大子序列的和、求x的n次幂、众数、大整数乘法等问题,讲解如何利用分治法进行求解。

第10章主要介绍贪心算法。首先介绍贪心算法的思想,然后针对找零钱问题、背包问题、删数问题、加油站问题等具体实例,讲解利用贪心算法策略实现算法的求解问题。

第11章主要介绍回溯算法。首先介绍回溯算法的思想,然后针对装载问题、旅行商问题、和式分解等具体实例,讲解如何构造解空间树,以及解空间树的搜索和算法实现。

本书特点

本书内容紧紧围绕《高等学校计算机专业核心课程教学实施方案》,涵盖教学方案和考研大纲要求的知识点。本书系作者多年教学实践经验总结,主要特点如下:

(1)理论与实践并重,突出实践。本书在讲解抽象概念和算法思想时,每个算法都给出了具体算法的Java语言实现,每一章均提供了综合案例的详细讲解,以图文形式给出具体的实现过程,最后给出完整的算法实现。

(2)结构清晰,内容全面。针对每个抽象的概念、知识点,配合类比和丰富的图表进行讲解。

(3)例题典型、丰富。本书例题选自全国著名高校考研试题、竞赛试题,并给出了详细的分析和完整的算法实现。

相信在学完本书后,读者会在数据结构和算法方面有很大的收获。预祝读者在学习本书时有一个愉快的旅程。

配套教学资源

为了方便初学者自学、教师教学和学生学习,本书提供了全面、丰富的教学资源,配套教学资源包括以下内容:

(1)PPT教学课件。

(2)示例源程序代码。

(3)微课视频。

(4)教学大纲。

(5)习题与答案

(6)期末考试样题。

(7)线上教学资源。

(8)作者答疑QQ群。

本书作者及致谢

参加本书编写的有陈锐、黄敏、张世征、徐洁、吕睿。

在本书的出版过程中,得到了郑州轻工业大学和清华大学出版社的大力支持,在此表示衷心感谢。尤其感谢清华大学出版社的编辑为本书出版做出的辛勤努力。

在编写本书的过程中,参阅了大量相关教材、著作,个别案例也参考了网络资源,在此向各位原著者致敬!

由于编写时间仓促,水平所限,书中难免存在不足之处,恳请读者不吝赐教。读者可通过本书下载资源中提供的QQ群进行讨论交流。

 作  者  

2023年8月  

目录

目    录
第1章  数据结构与算法概述 1
1.1  为什么要学习数据结构 1
1.2  基本概念和术语 2
1.3  数据的逻辑结构与存储结构 4
1.3.1  逻辑结构 4
1.3.2  存储结构 5
1.4  抽象数据类型及其描述 6
1.4.1  什么是抽象数据类型 6
1.4.2  抽象数据类型的描述 6
1.5  算法 8
1.5.1  数据结构与算法的关系 9
1.5.2  什么是算法 9
1.5.3  算法的5个特性 9
1.5.4  算法的描述 10
1.6  算法分析 11
1.6.1  算法设计的4个目标 11
1.6.2  算法效率评价 12
1.6.3  算法的时间复杂度 13
1.6.4  算法的空间复杂度 16
1.7  学好数据结构的秘诀 17
1.8  小结 19
第2章  线性表 20
2.1  线性表的定义及抽象数据类型 20
2.1.1  线性表的定义 20
2.1.2  线性表的抽象数据类型 21
2.2  线性表的顺序表示与实现 22
2.2.1  线性表的顺序存储 22
2.2.2  顺序表的基本运算 23
2.2.3  基本操作性能分析 26
2.2.4  顺序表应用举例 27
2.3  线性表的链式表示与实现 30
2.3.1  单链表的存储结构 30
2.3.2  单链表上的基本运算 32
2.3.3  单链表应用举例 36
2.3.4  循环单链表 38
2.3.5  双向链表 41
2.4  一元多项式的表示与相乘 44
2.4.1  一元多项式的表示 44
2.4.2  一元多项式相乘 45
2.5  小结 49
第3章  栈与队列 50
3.1  栈的表示与实现 50
3.1.1  栈的定义 50
3.1.2  栈的抽象数据类型 51
3.1.3  顺序栈 52
3.1.4  链栈 56
3.2  栈的应用 59
3.2.1  数制转换 59
3.2.2  行编辑程序 60
3.2.3  算术表达式求值 61
3.3  栈与递归 67
3.3.1  递归 68
3.3.2  消除递归 71
3.4  队列的表示与实现 73
3.4.1  队列的定义 73
3.4.2  队列的抽象数据类型 73
3.4.3  顺序队列 74
3.4.4  顺序循环队列 76
3.4.5  双端队列 79
3.4.6  链式队列 79
3.4.7  链式队列的实现 81
3.5  队列在杨辉三角中的应用 82
3.5.1 什么是杨辉三角 82
3.5.2  构造队列 83
3.5.3  杨辉三角队列的实现 83
3.6  小结 85
第4章  串、数组与广义表 86
4.1  串的定义及抽象数据类型 86
4.1.1  什么是串 86
4.1.2  串的抽象数据类型 87
4.2  串的存储表示 88
4.2.1  串的顺序存储结构 88
4.2.2  串的链式存储结构 89
4.3  串的模式匹配 90
4.3.1  朴素模式匹配算法——Brute-Force 90
4.3.2  改进算法—KMP算法 92
4.3.3  模式匹配应用举例 98
4.4  数组的定义及抽象数据类型 99
4.4.1  数组的基本概念 99
4.4.2  数组的抽象数据类型 100
4.4.3  数组的顺序存储结构 100
4.4.4  特殊矩阵的压缩存储 101
4.4.5  稀疏矩阵的压缩存储及典型应用 104
4.5  广义表 111
4.5.1  什么是广义表 111
4.5.2  广义表的抽象数据类型 112
4.5.3  广义表的头尾链表表示 113
4.5.4  广义表的扩展线性链表表示 113
4.6  小结 115
第5章  树和二叉树 116
5.1  树的定义和抽象数据类型 116
5.1.1  树的定义 116
5.1.2  树的逻辑表示 118
5.2  二叉树的定义、性质和抽象数据类型 118
5.2.1  二叉树的定义 119
5.2.2  二叉树的性质 120
5.2.3  二叉树的抽象数据类型 122
5.2.4  二叉树的存储表示 123
5.3  二叉树的遍历 125
5.3.1  二叉树遍历的定义 126
5.3.2  二叉树的先序遍历 126
5.3.3  二叉树的中序遍历 128
5.3.4  二叉树的后序遍历 130
5.4  二叉树的线索化 132
5.4.1  二叉树的线索化定义 132
5.4.2  二叉树的线索化算法实现 133
5.4.3  线索二叉树的遍历 135
5.4.4  线索二叉树的应用举例 137
5.5  树、森林与二叉树 139
5.5.1  树的存储结构 139
5.5.2  树转换为二叉树 142
5.5.3  森林转换为二叉树 143
5.5.4  二叉树转换为树和森林 143
5.5.5  树和森林的遍历 144
5.6  并查集 145
5.6.1  并查集的定义 145
5.6.2  并查集的实现 146
5.6.3  并查集的应用 149
5.7  哈夫曼树 151
5.7.1  哈夫曼树的定义 151
5.7.2  哈夫曼编码 152
5.7.3  哈夫曼编码算法的实现 153
5.8  小结 158
第6章  图 159
6.1  图的定义与相关概念 159
6.1.1  图的定义 159
6.1.2  图的相关概念 160
6.1.3  图的抽象数据类型 162
6.2  图的存储结构 163
6.2.1  邻接矩阵表示法 163
6.2.2  邻接表表示法 168
6.2.3  十字链表 172
6.2.4  邻接多重表 173
6.3  图的遍历 174
6.3.1  图的深度优先遍历 174
6.3.2  图的广度优先遍历 178
6.4  图的连通性问题 179
6.4.1  无向图的连通分量与生成树 180
6.4.2  最小生成树 181
6.5  有向无环图 187
6.5.1  AOV网与拓扑排序 187
6.5.2  AOE网与关键路径 190
6.6  最短路径 196
6.6.1  从某个顶点到其他顶点的最短路径 196
6.6.2  每一对顶点之间的最短路径 202
6.7  小结 206
第7章  查找 208
7.1  查找的基本概念 208
7.2  静态查找 209
7.2.1  顺序表的查找 209
7.2.2  有序顺序表的查找 211
7.2.3  索引顺序表的查找 213
7.3  动态查找 215
7.3.1  二叉排序树 215
7.3.2  平衡二叉树 221
7.4  B-树与B+树 227
7.4.1  B-树 227
7.4.2  B+树 233
7.5  哈希表 233
7.5.1  哈希表的定义 234
7.5.2  哈希函数的构造方法 234
7.5.3  处理冲突的方法 235
7.5.4  哈希表的查找与分析 237
7.5.5  哈希表应用举例 238
7.6  小结 242
第8章  排序 243
8.1  排序的基本概念 243
8.2  插入排序 244
8.2.1  直接插入排序 244
8.2.2  折半插入排序 246
8.2.3  希尔排序 246
8.2.4  插入排序应用举例 247
8.3  选择排序 248
8.3.1  简单选择排序 248
8.3.2  堆排序 249
8.4  交换排序 254
8.4.1  冒泡排序 254
8.4.2  快速排序 256
8.4.3  交换排序应用举例 258
8.5  归并排序 261
8.6  基数排序 263
8.6.1  基数排序算法 263
8.6.2  基数排序应用举例 266
8.7  小结 269
第9章  分治算法 271
9.1  分治算法的基本思想 271
9.2  求最大子序列的和 274
9.3  求x的n次幂 277
9.4  众数问题 278
9.5  求n个数中的最大者和最小者 280
9.6  整数划分问题 283
9.7  大整数乘法 285
9.8  小结 290
第10章  贪心算法 291
10.1  贪心算法的思想 291
10.2  找零钱问题 293
10.3  背包问题 295
10.4  删数问题 299
10.5  加油站问题 301
10.6  小结 302
第11章  回溯算法 303
11.1  回溯算法的基本思想 303
11.1.1  问题的解空间 304
11.1.2  回溯算法的基本思想 305
11.2  装载问题 307
11.3  旅行商问题 310
11.4  和式分解问题 314
11.5  小结 317
参考文献 318
课后习题(电子版见下载) 319

正版购买

《图解Java数据结构与算法(微课视频版)》(陈锐,黄敏,张世征)【摘要 书评 试读】- 京东图书 (jd.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值