数据结构与算法经典问题解析 Java语言描述PDF电子书下载
- 电子书积分:14 积分如何计算积分?
- 作 者:(印)纳拉辛哈·卡鲁曼希(Narasimha Karumanchi)著
- 出 版 社:北京:机械工业出版社
- 出版年份:2016
- ISBN:9787111538455
- 页数:443 页
第1章 绪论 1
1.1 变量 1
1.2 数据类型 1
1.3 数据结构 2
1.4 抽象数据类型 2
1.5 什么是算法 3
1.6 为什么需要算法分析 3
1.7 算法分析的目的 3
1.8 什么是运行时间分析 4
1.9 如何比较算法 4
1.10 什么是增长率 4
1.11 常用的增长率 4
1.12 分析的类型 5
1.13 渐近表示 6
1.14 大O表示法 6
1.15 Ω表示法 7
1.16 ?表示法 8
1.17 重要说明 9
1.18 为什么称为渐近分析 9
1.19 渐近分析指南 9
1.20 渐近表示法的性质 11
1.21 常用的对数和累加公式 11
1.22 分治法主定理 12
1.23 分治法主定理的相关问题 12
1.24 问题规模减小和递归求解主定理 13
1.25 问题规模减小和递归求解主定理的变型 13
1.26 猜测和确认的方法 14
1.27 平摊分析 15
1.28 算法分析的相关问题 15
第2章 递归和回溯 28
2.1 引言 28
2.2 什么是递归 28
2.3 为什么要用递归 28
2.4 递归函数的格式 28
2.5 递归和内存(可视化) 29
2.6 递归与迭代 30
2.7 递归说明 30
2.8 递归算法的经典用例 30
2.9 递归的相关问题 31
2.10 什么是回溯 32
2.11 回溯算法的经典用例 32
2.12 回溯的相关问题 32
第3章 链表 34
3.1 什么是链表 34
3.2 链表抽象数据类型 34
3.3 为什么要用链表 35
3.4 数组概述 35
3.5 链表、数组和动态数组的比较 36
3.6 单向链表 36
3.7 双向链表 41
3.8 循环链表 46
3.9 一种存储高效的双向链表 51
3.10 松散链表 52
3.11 链表的相关问题 55
第4章 栈 72
4.1 什么是栈 72
4.2 如何使用栈 72
4.3 栈抽象数据类型 73
4.4 异常 73
4.5 应用 73
4.6 实现 73
4.7 栈的各种实现方法比较 77
4.8 栈的相关问题 78
第5章 队列 98
5.1 什么是队列 98
5.2 如何使用队列 98
5.3 队列抽象数据类型 99
5.4 异常 99
5.5 应用 99
5.6 实现 99
5.7 队列的相关问题 104
第6章 树 110
6.1 什么是树 110
6.2 术语 110
6.3 二叉树 111
6.4 二叉树的遍历 114
6.5 通用树(N叉树) 135
6.6 线索(无栈或无队列结构)二叉树遍历 141
6.7 表达式树 147
6.8 异或树 149
6.9 二叉搜索树 150
6.10 平衡二叉搜索树 164
6.11 AVL树 165
6.12 树的其他形式 178
6.12.1 红黑树 178
6.12.2 伸展树 179
6.12.3 增强树 179
6.12.4 替罪羊树 179
6.12.5 区间树 180
第7章 优先队列和堆 181
7.1 什么是优先队列 181
7.2 优先队列ADT 181
7.3 优先队列的应用 182
7.4 优先队列的实现 182
7.5 堆和二叉堆 183
7.6 二叉堆 184
7.7 优先队列(堆)的相关问题 190
第8章 并查集ADT 201
8.1 引言 201
8.2 等价关系和等价类 201
8.3 并查集ADT 202
8.4 应用 202
8.5 并查集ADT实现中的权衡 202
8.6 快速UNION实现(慢FIND) 203
8.7 快速UNION实现(快速FIND) 206
8.8 路径压缩 208
8.9 小结 209
8.10 并查集的相关问题 209
第9章 图算法 211
9.1 引言 211
9.2 术语 211
9.3 图的应用 214
9.4 图的表示 214
9.5 图的遍历 217
9.6 拓扑排序 225
9.7 最短路径算法 226
9.8 最小生成树 231
9.9 图算法的相关问题 235
第10章 排序 256
10.1 什么是排序 256
10.2 为什么需要排序 256
10.3 排序的分类 256
10.4 其他分类方法 257
10.5 冒泡排序 257
10.6 选择排序 258
10.7 插入排序 259
10.8 希尔排序 261
10.9 归并排序 262
10.10 堆排序 264
10.11 快速排序 264
10.12 树排序 266
10.13 排序算法比较 267
10.14 线性排序算法 267
10.15 计数排序 267
10.16 桶排序 268
10.17 基数排序 268
10.18 拓扑排序 269
10.19 外部排序 269
10.20 排序的相关问题 270
第11章 查找 279
11.1 什么是查找 279
11.2 为什么需要查找 279
11.3 查找的类型 279
11.4 符号表和散列 281
11.5 字符串查找算法 281
11.6 查找的相关问题 281
第12章 选择算法(中位数) 304
12.1 什么是选择算法 304
12.2 基于排序的选择算法 304
12.3 基于划分的选择算法 304
12.4 线性选择算法——中位数的中位数算法 305
12.5 按照排序顺序查找K个最小元素 305
12.6 选择算法的相关问题 305
第13章 符号表 314
13.1 引言 314
13.2 什么是符号表 314
13.3 符号表的实现 315
13.4 符号表实现方法的比较 315
第14章 散列 317
14.1 什么是散列 317
14.2 为什么用散列 317
14.3 散列表ADT 317
14.4 散列的例子 317
14.5 散列的组成部分 319
14.6 散列表 319
14.7 散列函数 319
14.8 负载因子 320
14.9 冲突 320
14.10 冲突解决技术 320
14.11 分离链接法 320
14.12 开放定址法 321
14.13 冲突解决技术的比较 322
14.14 散列如何达到O(1)的时间复杂度 322
14.15 散列技术 323
14.16 不适用散列表的问题 323
14.17 布鲁姆过滤器 323
14.18 散列的相关问题 325
第15章 字符串算法 335
15.1 引言 335
15.2 字符串匹配算法 335
15.3 蛮力法 336
15.4 Robin-Karp字符串匹配算法 336
15.5 基于有限自动机的字符串匹配算法 337
15.6 KMP算法 338
15.7 Boyce-Moore算法 342
15.8 存储字符串的数据结构 342
15.9 字符串的散列表实现 342
15.10 字符串的二叉搜索树实现 343
15.11 键树 343
15.12 三叉搜索树 345
15.13 二叉搜索树、键树和三叉搜索树的比较 349
15.14 后缀树 349
15.15 字符串的相关问题 353
第16章 算法设计技术 361
16.1 引言 361
16.2 分类 361
16.3 按实现方法分类 361
16.4 按设计方法分类 362
16.5 其他分类法 363
第17章 贪婪算法 364
17.1 引言 364
17.2 贪婪策略的定义 364
17.3 贪婪算法的要素 364
17.4 贪婪算法的适用范围 365
17.5 贪婪算法的优缺点 365
17.6 贪婪算法的应用 365
17.7 贪婪思想 365
17.8 贪婪算法的相关问题 368
第18章 分治算法 375
18.1 引言 375
18.2 分治策略的定义 375
18.3 分治法的适用范围 375
18.4 分治法的图形化描述 375
18.5 分治思想 376
18.6 主定理 377
18.7 分治法的应用 377
18.8 分治法的相关问题 378
第19章 动态规划算法 390
19.1 引言 390
19.2 动态规划策略的定义 390
19.3 动态规划策略的性质 390
19.4 动态规划的适用范围 390
19.5 动态规划的实现方法 391
19.6 动态规划算法的例子 391
19.7 动态规划思想 391
19.8 动态规划的相关问题 396
第20章 复杂度类型 425
20.1 引言 425
20.2 多项式/指数时间 425
20.3 决策问题的定义 426
20.4 决策过程 426
20.5 复杂度类型的定义 426
20.6 复杂度类型 426
20.7 归约 428
20.8 复杂度类型的相关问题 430
第21章 杂谈 433
21.1 引言 433
21.2 位运算的使用 433
21.2.1 按位与操作 433
21.2.2 按位或操作 434
21.2.3 按位异或操作 434
21.2.4 按位左移操作 434
21.2.5 按位右移操作 434
21.2.6 按位补操作 434
21.2.7 检测第K位是否置位 434
21.2.8 第K位置位 435
21.2.9 第K位清零 435
21.2.10 切换第K位 435
21.2.11 切换值为1的最右位 435
21.2.12 隔离值为1的最右位 435
21.2.13 隔离值为0的最右位 435
21.2.14 检查某个数是否是2的幂 436
21.2.15 将某个数乘以2的幂 436
21.2.16 将某个数除以2的幂 436
21.2.17 找到给定操作数的模 436
21.2.18 反转二进制数 436
21.2.19 位值1的计数 436
21.2.20 创建末尾位为0的掩码 437
21.2.21 交换奇偶位 438
21.2.22 不使用除法来计算平均数 438
21.3 其他编程问题 438
参考文献 442
- 《SQL与关系数据库理论》(美)戴特(C.J.Date) 2019
- 《联吡啶基钌光敏染料的结构与性能的理论研究》李明霞 2019
- 《社会学与人类生活 社会问题解析 第11版》(美)James M. Henslin(詹姆斯·M. 汉斯林) 2019
- 《异质性条件下技术创新最优市场结构研究 以中国高技术产业为例》千慧雄 2019
- 《数字影视特效制作技法解析》王文瑞著 2019
- 《数据库技术与应用 Access 2010 微课版 第2版》刘卫国主编 2020
- 《大数据Hadoop 3.X分布式处理实战》吴章勇,杨强 2020
- 《Power BI数据清洗与可视化交互式分析》陈剑 2020
- 《2019国家医师资格考试用书 中医执业助理医师资格考试全真模拟试卷与解析 第3版》国家医师资格考试研究组 2019
- 《数据失控》(美)约翰·切尼-利波尔德(John Cheney-Lippold)著 2019
- 《手工咖啡 咖啡爱好者的完美冲煮指南》(美国)杰茜卡·伊斯托,安德烈亚斯·威尔霍夫 2019
- 《希利尔讲雕塑》(美)维吉尔·莫里斯·希利尔(Virgil Mores Hillyer)著 2019
- 《三个世界的西班牙人》(西)胡安·拉蒙·希梅内斯 2018
- 《搏击俱乐部》千之贺译;(美国)查克·帕拉尼克,卡梅隆·斯图尔特 2019
- 《成为自己 找回生命本来的样子》(印)克里希那穆提,司哲 2018
- 《园丁集 2019》冰心译;(印)拉宾德拉纳特·泰戈尔 2019
- 《哈里森内科学 第19版 双语版 上》(美)丹尼斯·L.卡斯帕(Dennis L. Kasper),(美)安东尼·S.福奇由(Anthony S.Fauci),(美)斯蒂芬·L.豪泽(Stephen L.Hauser)著;王海译 2019
- 《烘焙工坊》(希)阿萨纳西奥斯·措克斯(Athanasios Tzokas)编 2019
- 《大数据项目管理 从规划到实现》(美)特德·马拉斯卡(Ted Malaska),(美)乔纳森·塞德 2020
- 《软件工程综合实践案例》岳希主编 2019
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《北京生态环境保护》《北京环境保护丛书》编委会编著 2018
- 《高等教育双机械基础课程系列教材 高等学校教材 机械设计课程设计手册 第5版》吴宗泽,罗圣国,高志,李威 2018
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019
- 《高等院校旅游专业系列教材 旅游企业岗位培训系列教材 新编北京导游英语》杨昆,鄢莉,谭明华 2019
- 《中国十大出版家》王震,贺越明著 1991
- 《近代民营出版机构的英语函授教育 以“商务、中华、开明”函授学校为个案 1915年-1946年版》丁伟 2017
- 《新工业时代 世界级工业家张毓强和他的“新石头记”》秦朔 2019
- 《智能制造高技能人才培养规划丛书 ABB工业机器人虚拟仿真教程》(中国)工控帮教研组 2019
- 《AutoCAD机械设计实例精解 2019中文版》北京兆迪科技有限公司编著 2019