注册 | 登录读书好,好读书,读好书!
读书网-DuShu.com
当前位置: 首页出版图书科学技术计算机/网络软件与程序设计JAVA及其相关精讲数据结构(Java语言实现)

精讲数据结构(Java语言实现)

精讲数据结构(Java语言实现)

定 价:¥129.00

作 者: 塔拉
出版社: 清华大学出版社
丛编项:
标 签: 暂缺

购买这本书可以去


ISBN: 9787302679066 出版时间: 2025-03-01 包装: 平装-胶订
开本: 16开 页数: 字数:  

内容简介

  本书按照循序渐进的顺序讲解了多种常见数据结构的相关定义、实现方式及应用场景,并通过提供配套代码、研读Java源码的方式,让读者能够通过体会代码实现细节的方式加深对各种常见数据结构从理论定义到实践落地过程的理解。本书除了阐述各种常见数据结构的基本定义外,还引申的讲解了常见数据结构内部隐含的特点,使读者能够更加全面地了解各种常见数据结构的特征和优缺点。本书共9章。第1章对数据结构时间、空间效能的评判标准进行讲解。第2章对数组和链表及其引申结构进行讲解。第3章对栈和队列两种基于数组和链表的逻辑结构讲解。第4章对常见的搜索、排序算法进行讲解。第5章对字符串结构及字符串匹配算法进行讲解。第6章对多种常见树形结构及相关算法进行讲解。第7章对堆结构进行讲解。第8章对散列表结构进行讲解。第9章对图结构及其常见算法进行讲解。本书既适合具有一定Java语言基础的高校学生作为学习数据结构、研究其实现原理的参考书籍,也对具有一定工作经验、需要对不同数据结构之间差异性、内在特征进行研究的人群均有一定参考价值。

作者简介

  塔拉,国家认证的软件开发工程师、Oracle认证的Java开发工程师。毕业于黑龙江大学计算机科学技术专业,毕业后从事软件研发工作,并于2016年正式进入IT教育行业。从业期间曾在多家IT教育机构及高校从事讲师、课程研发工作,至今已授业数百名学员,积累了丰富的教育教学经验,对IT行业教学内容及教育体系有深入了解。从事IT教育行业过程中,作者坚持研究各种应用底层原理与编程思想,在数据结构、通用型算法及设计模式等方面有所心得。

图书目录

第1章绪论1
1.1时间复杂度1
1.2空间复杂度2
第2章数组与链表3
2.1数组结构4
2.1.1数组的创建与基本操作4
2.1.2数组内存特性分析7
2.1.3内存中的多维数组13
2.2链表结构17
2.2.1基本概念普及17
2.2.2链表内存特性分析19
2.2.3链表衍生结构27
第3章栈和队列54
3.1栈结构55
3.1.1栈结构概述55
3.1.2栈结构的实现55
3.1.3栈结构的应用场景56
3.2队列结构63
3.2.1队列结构概述63
3.2.2队列结构的实现64
3.2.3队列结构的应用场景65
3.2.4队列结构的衍生68
第4章递归、查找与排序73
4.1递归73
4.1.1简单的递归案例74
4.1.2递归结构基础75
4.1.3递归结构进阶78
4.2查找79
4.2.1二分查找79
4.2.2插值查找84
4.2.3斐波那契查找89
4.3排序96
4.3.1排序算法的稳定性96
4.3.2冒泡排序97
4.3.3选择排序101
4.3.4插入排序105
4.3.5希尔排序110
4.3.6归并排序115
4.3.7快速排序123
4.3.8堆排序131
4.3.9计数排序141
4.3.10桶排序147
第5章字符串152
5.1基本概念与实现152
5.1.1字符串的基本概念152
5.1.2Java中的String类153
5.2字符串匹配算法156
5.2.1通用定义156
5.2.2BF算法156
5.2.3RK算法161
5.2.4KMP算法168
5.2.5BM算法183
5.2.6Sunday算法196
第6章树结构203
6.1树结构基础204
6.1.1树的基础概念204
6.1.2树的遍历操作206
6.2二叉树216
6.2.1二叉树的定义216
6.2.2二叉树的基本性质217
6.2.3满二叉树和完全二叉树217
6.2.4二叉树的遍历操作219
6.2.5通过深度优先遍历序列构建二叉树230
6.2.6树、森林与二叉树的转换238
6.3哈夫曼树与哈夫曼编码译码器248
6.3.1哈夫曼树的构建248
6.3.2获取明文字符的哈夫曼编码249
6.3.3文本编码与译码250
6.4线索二叉树与Morris遍历250
6.4.1线索二叉树的节点定义方式251
6.4.2二叉树的线索化251
6.4.3线索二叉树的遍历261
6.4.4二叉树的Morris遍历274
6.5二叉排序树286
6.5.1二叉排序树的结构特点286
6.5.2二叉排序树的增删查找287
6.5.3二叉排序树退化为单链表的情况295
6.6平衡二叉树(AVL树)296
6.6.1AVL树节点的旋转方式296
6.6.2节点增删导致不平衡的情况304
6.6.3AVL树与平衡二叉树的对比307
6.7234树308
6.7.1234树的结构特点308
6.7.2234树的增删查找310
6.8红黑树318
6.8.1红黑树的平衡策略与染色规则318
6.8.2234树向红黑树的转换319
6.8.3红黑树的节点增删与结构调整323
6.9B树与B 树338
6.9.1B树结构338
6.9.2B 树结构339
6.9.3B树与B 树在实际应用方面的区别341
6.10字典树(Trie树)344
6.10.1字典树的结构特点344
6.10.2字典树的基本功能与实现方式346
6.10.3字典树的时间复杂度与空间复杂度357
6.11树状数组358
6.11.1前置知识: 非负整数的lowBit操作358
6.11.2树状数组的构建方式359
6.11.3树状数组的基本操作364
6.11.4差分数组与基本操作367
第7章堆结构378
7.1堆结构基础379
7.2二叉堆380
7.2.1二叉堆的存储方式与特性380
7.2.2二叉堆的元素添加操作381
7.2.3二叉堆的堆顶元素删除操作383
7.2.4二叉堆与TopK问题386
7.3左式堆与斜堆387
7.3.1左式堆388
7.3.2斜堆395
7.4二项堆401
7.4.1二项树结构401
7.4.2二项堆的结构特点404
7.4.3二项堆的合并操作405
7.4.4二项堆的元素添加操作409
7.4.5二项堆的堆顶元素删除操作412
第8章散列表416
8.1散列表的基本概念417
8.2散列函数的常见实现方式420
8.2.1前置知识: 整数的模运算421
8.2.2直接定址法425
8.2.3除留余数法425
8.2.4数字分析法426
8.2.5平方取中法427
8.2.6折叠法427
8.2.7随机数法428
8.2.8全域散列法428
8.3散列表常见实现方式429
8.3.1开放地址法实现散列表430
8.3.2链地址法实现散列表434
8.3.3完全散列的实现434
8.4散列表的平均查找长度437
8.5Java中的散列表440
8.5.1Java中的hashCode()与equals()方法440
8.5.2HashMap类与HashSet类443
第9章图结构448
9.1图结构基础449
9.1.1图的基础概念449
9.1.2图的表示方式453
9.1.3图的遍历操作456
9.2无向带权图的最小生成树问题461
9.2.1普里姆算法462
9.2.2克鲁斯卡尔算法465
9.2.3普里姆算法与克鲁斯卡尔算法的比较468
9.3有向带权图的最短路径问题469
9.3.1迪杰斯特拉算法求解有向带权图的单源最短路径469
9.3.2弗洛伊德算法求解有向带权图的多源最短路径473
9.4AOV网和拓扑排序问题479
9.5AOE网和关键路径问题484
参考文献489

本目录推荐