下载地址:网盘下载

内容简介

本书以Java为描述语言,介绍了数据结构与算法的基本知识。书中结合企业界的工程实践提炼教学内容,特别对数据结构中易混淆的问题进行了梳理,对每一个问题提出不同的解决方案。本书是一本优秀的数据结构方面的教材。

目录

译者序 
前言 
第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.11AVL树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优先队列ADT181 
7.3优先队列的应用182 
7.4优先队列的实现182 
7.5堆和二叉堆183 
7.6二叉堆184 
7.7优先队列(堆)的相关问题190 
第8章并查集ADT201 
8.1引言201 
8.2等价关系和等价类201 
8.3并查集ADT202 
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散列表ADT317 
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.4RobinKarp字符串匹配算法336 
15.5基于有限自动机的字符串匹配算法337 
15.6KMP算法338 
15.7Boyce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 
查看全部↓

前言/序言

我知道许多读者往往不读前言,但是强烈建议你至少浏览一下本书前言,因为本书前言与众不同。 
本书的主要目的不是提供关于数据结构和算法的定理及证明。本书采用的模式是利用不同的复杂度改善问题的解(对于每个问题,你将发现多个具有不同复杂度及降低复杂度的解法)。基本上,这一思路就是列举某个问题的所有可能解。通过这种方式,即使你遇到一个新问题,它也能够向你指明如何思考该问题所有可能的解。本书对于正在准备面试、参加选拔性考试以及校园面试的读者很有帮助。 
作为一个求职者,如果你能完整地阅读本书并且很好地领会书中的内容,相信你会从容地面对面试官,这正是本书的目的所在。若作为一个教师来阅读本书,你将能够用简单的方法来提升授课质量,学生也会为选择攻读计算机科学/信息技术学位而感到欣慰。 
作为准备参加计算机科学/信息技术专业选拔考试的学生,本书完整而详细地涵盖了所有必需的主题,在撰写本书时,就着眼于帮助正在准备这些考试的学生。 
本书对攻读工程学位的学生和研究生都非常有用。在所有的章节中,你会发现本书更强调问题及其分析,而不是理论的阐述。每一章将首先阐述必要的理论基础,然后再给出问题集。书中大约有700个算法问题及相应的解。 
对于许多问题,本书提供了多个具有不同复杂度的解决方法。我们从蛮力法开始,逐步引入问题的佳解决方法。对于每一个问题,我们试图知晓算法所需的运行时间和内存空间。 
建议读者至少完整地阅读本书一遍以便充分理解所有的主题。在随后的阅读中,你可以直接选择任何一章阅读和参考。即便经过足够的校阅,书中出现小纰漏也在所难免。如果发现了任何此类错误,www.CarrerMonk.com网站将予以更新,请经常关注本网站以便及时了解任何勘误、新问题和解决方法。此外,请提供宝贵建议至Info@CarrerMonk.com。 
祝愿你一切顺利。我相信你会发现本书很有用。 
致谢感谢我的父母,他们为我所做的一切无法衡量,是他们给予的无私的爱、提供的安定的成长环境和坚持不懈的传统价值观,教会了我赞美和拥抱生活。他们是这世界上好的父母和榜样,他们使我明白信念、勤奋和决心能够让任何事成为可能! 
本书的撰写得到了许多人的帮助,没有他们的帮助本书不可能完成。感谢他们为改进本书终稿所做出的努力。需要说明的是,我已经尽大努力纠正了审稿人所指出的错误并准确地对各种协议和机制进行了描述。我个人对书中出现的任何其他错误负责。
首先,感谢那些在本书撰写过程中陪我度过难关的人,感谢所有给予我支持的人,感谢所有参与讨论、阅读、编写和提出宝贵意见的人,感谢所有允许我引用他们的评论并协助我编辑、校对和设计本书的人。特别地,我要感谢如下人员: 
●Mohan Mullapudi,印度理工学院孟买分校,架构师,dataRPM Pvt.Ltd.●Navin Kumar Jaiswal,资深咨询师,Juniper Networks Inc.●Kishore Kumar Jinka,印度理工学院孟买分校●A.Vamshi Krishna,印度理工学院坎普尔分校,Mentor Graphics Inc.●Hirak Chatterjee,Yahoo Inc.●Kondrakunta Murali Krishna,科技学士,技术主管,HCL●Chaganti Siva Rama Krishna Prasad,创始人,StockMonks Pvt.Ltd.●Naveen Valsakumar,联合创始人,NotionPress Pvt.Ltd.●Ramanaiah,讲师,龙树科技学院,MLG后,感谢Guntur Vikas学院主任Y.V.Gopala Krishna Murthy教授、Ayub Khan教授(ACE工程学院)、T.R.C.Bose(APTransco前任主任)、Ch.Venkateswara Rao VNR Vignanajyothi(工程学院,Hyderabad)、Ch.Venkata Narasaiah(IPS)、Yarapathineni Lakshmaiah (Manchikallu,Gurazala) ,以及所有在本项目期间帮助过我和家人的所有好心人。 
——Narasimha Karumanchi印度理工学院孟买分校理科硕士CareerMonk.com创始人 

下载地址:网盘下载

转载于:https://www.cnblogs.com/long12365/p/9730822.html

数据结构与算法经典问题解析 Java语言描述pdf相关推荐

  1. 硬核 阿里P8终于把(数据结构与算法经典问题解析)讲全了

    随着科学技术的发展,人工智能已经逐渐渗透到各个行业,这是一个相当有前景的专业领域. 其中,算法工程师这一职位更是非常火爆,在急缺大量人才的同时,也吸引了众多求职者,那么,初学者该如何学好算法呢? 算法 ...

  2. 阿里架构师强烈推荐《数据结构与算法经典问题解析》(PDF文档)

    前言: 小编整理了一份数据结构与算法经典问题解析核心知识点.覆盖递归和回溯.链表.栈.队列.树.优先队列和堆.队列.优先队列和堆.并查集ADT.排序.选择算法(中位数).散列.算法设计技术.分治算法. ...

  3. 通过“FBI树”复习二叉树算法(洛谷P1087题题解,Java语言描述)

    题目要求 P1087题目链接 分析 所谓的"FBI树",其实就是一种二叉树,最后的结果也无非就是二叉树的后序遍历序列. 所以,考察的知识点就是--二叉树基本算法的灵活运用. 本题关 ...

  4. 涂国旗(洛谷P3392题题解,Java语言描述)

    题目要求 题目链接 分析 我做的就比较暴力啦,由于三种颜色都至少有一行,所以: W:[0,N−2)W:[0, N-2)W:[0,N−2) B:[1,N−1)B: [1, N-1)B:[1,N−1) R ...

  5. 数据结构java实验 刘小晶_《数据结构实例解析与实验指导——Java语言描述》刘小晶著【摘要 书评 在线阅读】-苏宁易购图书...

    商品参数 作者: 刘小晶著 出版社:清华大学出版社 出版时间:2013-2-1 版次:1 印次:1 印刷时间:2013-2-1 字数:619000 页数:380 开本:16开 装帧:平装 ISBN:9 ...

  6. 算法java语言描述_java语言描述数据结构与算法崔笑颜的博客

    java语言描述数据结构与算法崔笑颜的博客 冒泡排序 插入排序 选择排序 希尔排序 快速排序 归并排序 二分查找package com.demo.test; import java.util.Arra ...

  7. s数据结构替换子表java版_数据结构与算法分析Java语言描述(第3版) PDF和源码免费 下载...

    <数据结构与算法分析Java语言描述(第3版)>PDF和源码免费 下载 免积分下载 用户下载说明: 图书简介: 数据结构:Java语言描述(原书第3版)是国外数据结构与算法分析方面的经典教 ...

  8. 数据结构精品电子书分享之《数据结构》算法实现及解析

    书籍简介 作者:高一凡 副书名:配合严蔚敏.吴伟民编著的<数据结构>(C语言版) 出版日期:2002-10-1 出版社:其它 页数:450 ISBN:7-5606-1176-1/TP*06 ...

  9. 数据结构(java)课后答案_清华大学出版社-图书详情-《数据结构实用教程(Java语言描述)习题参考解答》...

    前 言 本书是与作者编著的<数据结构实用教程(Java语言描述)>一书相配套的辅助教材.全书共分为11章,包括绪论.集合.线性表.稀疏矩阵和广义表.栈和队列.树和二叉树.常用二叉树.图.图 ...

  10. 《数据结构与抽象:Java语言描述(原书第4版)》一JI2.3 抛出异常

    本节书摘来华章计算机<数据结构与抽象:Java语言描述(原书第4版)>一书中的第2章 ,[美]弗兰克M.卡拉诺(Frank M. Carrano) 蒂莫西M.亨利(Timothy M. H ...

最新文章

  1. 【Java_基础】Java中Native关键字的作用
  2. 数据算法——Spark二次排序
  3. 织梦html仅动态,dede织梦系统后台发布文章时设置为默认动态浏览的方法
  4. 图解Android - Zygote, System Server 启动分析
  5. python运行时修改代码会怎样_python运行时修改代码的方法——monkey patch
  6. WMI使用的WIN32_类库名
  7. nuxt.js 配置后端的请求地址
  8. Python二级笔记(2)
  9. #2002 - 服务器没有响应 (or the local MySQL server's socket is not ...
  10. docker底层实现原理总结
  11. 【Windows】XShell中使用小键盘和ALT键(作Meta键),使BackSpace正常
  12. 关于PHP上传文件时配置 php.ini 中的 upload_tmp_dir
  13. IBM V3500存储更换控制器一例
  14. Android P功能
  15. 继续开源还是走向封闭?谷歌未来
  16. Ubuntu下的几种常见输入法极其配置方式
  17. 吗 极域软件可以装win10_关于win10企业版在极域电子教室软件 v4.0 2015 豪华版的全屏控制下如何取得自由...
  18. IP地址 网关是什么?网络概念
  19. asp实训报告摘要_asp制作网页的实训报告总结
  20. 【转载】用cx_Freeze把Python代码打包成单个独立的exe可执行文件

热门文章

  1. 【java入门】超基础的java入门知识,细节拉满
  2. vue项目实现文字转换成语音播放功能
  3. 【UOS统信】安装谷歌浏览器
  4. 解决html页面运行时出现乱码问题
  5. Web渗透测试-实战 方法 思路 总结
  6. 读《超级整理术》--对整理的思路
  7. 太原冶金技师学院计算机系,山西冶金技师学院专业都有什么
  8. ISSCC 2018 13.2论文笔记
  9. 驱动人生6网卡版 v6.1.19.90 官方版
  10. HDL.Companion.v2.8.R1.for.Windows linux64 编程开发软件