![]()
内容推荐 随着云计算、大数据、人工智能、虚拟现实等应用的兴起,企业对于开发人员的算法要求也越来越高。本书全面讲解了在编程中涉及到的常用的数据结构及算法,同时,辅以大量的实战案例,图文并茂,令读者易于理解掌握。同时,案例的选型偏终于解决实际问题,具有很强的应用性、趣味性。全书示例采用Java语言编写,书中示例也可以作为面试使用。 本书书分为以下几部分:第一部分 预备知识(第1-2章):介绍数据结构和算法的基本概念,并演示如何搭建开发环境、编写测试用例。第二部分 数据结构(第3-14章):介绍常见的数据结构,包括数组、链表、矩阵、栈、队列、跳表、散列、树、图等。第三部分 常用算法(第15-20章):介绍常用的算法,包括分而治之、动态规划、贪婪算法、回溯、分支界定、遗传算法等。第四部分 商业实战(第21-22章):介绍汉诺塔及五子棋两款游戏的实现。本书适合对Java数据结构及算法感兴趣的学生、开发人员和架构师阅读。 目录 第1章 绪论 1.1 引言 1.1.1 数据结构概述 1.1.2 什么是算法 1.1.3 算法的描述 1.2 程序的性能 1.2.1 程序的性能 1.2.2 程序的性能 1.3 渐近记法 1.3.1 大O标记法 1.3.2 大Ω标记法 1.3.3 大Θ标记法 1.3.4 渐近记法总结 1.4 算法复杂度等级及其分析 1.4.1 常数的时间复杂度O(1) 1.4.2 对数的时间复杂度O(logn) 1.4.3 线性的时间复杂度O(n) 1.4.4 平方的时间复杂度O(n2) 1.4.5 指数的时间复杂度O(2n) 1.4.6 算法复杂度总结 1.5 总结 1.6 习题 第2章 开发环境搭建及测试 2.1 安装JDK 2.1.1 解压.zip文件到指定位置 2.1.2 设置环境变量 2.1.3 验证安装 2.2 安装Maven 2.2.1 安装 2.2.2 设置本地仓库 2.2.3 设置镜像 2.3 安装IDE 2.3.1 解压.zip文件到指定位置 2.3.2 配置工作区间 2.3.3 配置JDK 2.3.4 配置Maven 2.3.5 设置字符编码 2.4 实战:编写单元测试用例 2.4.1 创建HelloWorld类 2.4.2 使用JUnit 2.4.3 编写JUnit5测试用例 2.5 总结 2.6 习题 第3章 顺序表 3.1 Java数组初探 3.2 线性表数据结构 3.3 实战:使用数组实现顺序表 SequentialList 3.4 顺序表的动态扩容 3.4.1 顺序表的动态扩容原理 3.4.2 动态扩容机制的选择 3.4.3 ArrayList动态扩容分析 3.4.4 Vector动态扩容分析 3.4.5 选择ArrayList还是Vector 3.5 总结 3.6 习题 第4章 链表 第5章 数组和矩阵 第6章 栈 6.1 基本概念及应用场景 6.1.1 栈的基本概念 6.1.2 栈的应用场景 6.2 抽象数据类型 6.3 数组描述 6.4 实战:使用数组实现栈 SequentialListStack 6.4.1 成员变量及构造函数 6.4.2 统计栈的规模 6.4.3 判断栈中的数据元素是否为空 6.4.4 入栈 6.4.5 出栈 6.4.6 引用栈顶对象 6.4.7 时间复杂度分析总结 6.4.8 单元测试 6.5 链表描述 6.6 实战:使用链表实现栈 SinglyLinkedListStack 6.6.1 成员变量及构造函数 6.6.2 统计栈的规模 6.6.3 判断栈中的数据元素是否为空 6.6.4 入栈 6.6.5 出栈 6.6.6 引用栈顶对象 6.6.7 时间复杂度分析总结 6.6.8 单元测试 6.7 总结 6.8 习题 第7章 队列 第8章 跳表和散列 8.1 字典 8.1.1 跳表 8.1.2 散列 8.2 抽象数据类型 8.2.1 Dictionary抽象类 8.2.2 Map接口 8.2.3 Dictionary抽象类和Map接口 的抉择 8.3 散列HashMap 8.3.1 HashMap的声明 8.3.2 HashMap的成员变量和构造 函数 8.3.3 HashMap的核心方法 8.3.4 实战:HashMap的单元测试 8.3.5 实战:HashMap的应用案例 ——词频统计 8.4 基于跳表实现的 ConcurrentSkipListMap 8.4.1 ConcurrentSkipListMap的声明 8.4.2 ConcurrentSkipListMap的成员 变量和构造函数 8.4.3 ConcurrentSkipListMap的核心 方法 8.4.4 实战:ConcurrentSkipListMap 的单元测试 8.4.5 实战:ConcurrentSkipListMap 的应用案例——词频统计 8.5 实战:文本压缩 8.5.1 文本的压缩和解压 8.5.2 文本的压缩和解压的实现 8.5.3 测试文本的压缩和解压 8.6 总结 8.7 习题 第9章 树及二叉树 9.10 习题 第10章 优先级队列及堆 10.1 基本概念及应用场景 10.2 抽象数据类型 10.3 数组描述 10.4 实战:使用数组实现优先级队列 10.4.1 定义实现类 10.4.2 实现插入 10.4.3 实现删除 10.4.4 单元测试 10.5 堆描述 10.5.1 堆的定义 10.5.2 堆和普通树的区别 10.5.3 堆的存储 10.5.4 堆的常用操作 10.6 实战:使用堆实现优先级队列 10.6.1 定义实现类 10.6.2 实现插入 10.6.3 实现删除 10.6.4 单元测试 10.7 总结 10.8 习题 第11章 二叉查找树 第12章 平衡查找树 第13章 图 第14章 分而治之 第15章 贪心算法 第16章 动态规划 第17章 回溯 第18章 遗传算法 第19章 蚂蚁算法 第20章 汉诺塔游戏 20.1 实战:汉诺塔问题 参考文献 导语 1.通俗易懂,系统全面:内容由预备知识→数据结构→常用算法→商业实战层层推进,手把手教你从零开始编写数据结构和算法; 2.案例典型,实战性强:深入JDK源码讲解数据结构和算法的实现原理,用案例训练实战,用代码落实理论; 3.附赠资源,在线答疑:不仅附赠案例源代码,而且读者可进入作者个人开源社区,随时与作者交流,学习新最全的前沿编程技术 |