Data structures and problem solving using Java
副标题:无
作 者:(美)Mark Allen Weiss著;翁惠玉,严骏等译
分类号:
ISBN:9787115149886
微信扫一扫,移动浏览光盘
简介
本书从讲解什么是数据结构开始,延伸至高级数据结构和算法分析,强调数据结构和问题求解技术。本书的目的是从抽象思维和问题求解的观点提供对数据结构的实用介绍,试图包含有关数据结构、算法分析及其java实现的所有重要的细节。作者采用了独特的方法将数据结构分成说明和实现两部分,并充分利用了已有的数据结构库(java集合类api)。本书分为四个部分:第一部分讨论适合大多数应用的集合类api的一个子集,并覆盖基本的算法分析技术、递归和排序算法;第二部分包含了一组集合类api的应用实例;第三部分讨论数据结构的实现;第四部分描述了高级的数据结构,如伸展树、偶堆和不相交集数据结构。.
本书适合作为本科生数据结构课程或研究生算法分析课程的教材。教师可以灵活地选择本书的内容,选择最适合对应课程的内容授课。
mark allen weiss教授撰写的数据结构与算法分析方面的著作曾被评为20世纪最佳的30部计算机著作之一,已经成为公认的经典之作,被全球数百所大学采用为教材,广受好评。..
本书反映了weiss教授在数据结构和算法分析教学实践方面的最新成果。书中从实践需要出发,采用主流的面向对象编程语言java,在讲述了基本数据结构和算法之后,先通过几个贴近实际的实例讲授学生如何使用现成的数据结构来解决问题,有利于提高学生抽象思维能力,然后再透彻讲解java集合类对各种数据结构的实现。既降低了学习难度,又增加了趣味性。
与此同时,本书仍然继承了weiss著作数学严密、覆盖全面。选材精当、结构安排灵活以及习题丰富的优秀传统,适合读者自学和各种方式的课堂教学。...
目录
目录
第一部分 算法和构件块
第1章 算法分析
1.1 什么是算法分析
1.2 算法运行时间的实例
1.3 连续子序列最大和的问题
1.3.1 简单的O(N〓)算法
1.3.2 改进的O(N〓)算法
1.3.3 线性算法
1.4 一般的大O规则
1.5 对数
1.6 静态查找问题
1.6.1 顺序查找
1.6.2 二分搜索
1.6.3 插值查找
1.7 算法分析的检查
1.8 大O分析的局限性
小结
关键概念
常见错误
网上资源
习题
参考文献
第2章 集合类API
2.1 引言
2.2 迭代器模式
2.2.1 基本的迭代器设计
2.2.2 基于继承的迭代器和工厂方法
2.3 集合类API:容器和迭代器
2.3.1 Collection接口
2.3.2 Iterator接口
2.4 泛型算法
2.4.1 Comparator函数对象
2.4.2 Collection类
2.4.3 二分搜索
2.4.4 排序
2.5 List接口
2.5.1 ListIterator接口
2.5.2 LinkedList类
2.6 栈和队列
2.6.1 栈
2.6.2 栈与计算机语言
2.6.3 队列
2.6.4 集合类API中的栈和队列
2.7 集合
2.7.1 TreeSet类
2.7.2 HashSet类
2.B 映射
2.9 优先级队列
小结
关键概念
常见错误
网上资源
习题
参考文献
第3章 递归
3.1 什么是递归
3.2 背景:数学归纳法证明
3.3 基本的递归
3.3.1 以任何数制打印数
3.3.2 为什么可行
3.3.3 原理解析
3.3.4 太多的递归可能是危险的
3.3.5 树的预习
3.3.6 其他实例
3.4 数值应用
3.4.1 模运算
3.4.2 模的幂运算
3.4.3 最大公因子和乘法逆元素
3.4.4 RSA密码系统
3.5 分治算法
3.5.1 连续子序列最大和的问题
3.5.2 对一个基本的分治情况的分析
3.5.3 分治算法运行时间的通用上界
3.6 动态规划
3.7 回溯
小结
关键概念
常见错误
网上资源
习题
参考文献
第4章 排序算法
4.1 排序为什么重要
4.2 预备知识
4.3 插入排序及其他简单排序算法的分析
4.4 谢尔排序
4.5 归并排序
4.5.1 有序数组的线性时间合并
4.5.2 归并排序算法
4.6 快速排序
4.6.1 快速排序算法
4.6.2 快速排序的分析
4.6.3 挑选中心点
4.6.4 一种划分策略
4.6.5 键等于中心点
4.6.6 三个元素的中值划分
4.6.7 小规模数组
4.6.8 Java快速排序程序
4.7 快速选择
4.8 排序的下界
小结
关键概念
常见错误
网上资源
习题
参考文献
第5章 随机化
5.1 为什么需要随机数
5.2 随机数生成器
5.3 非均匀分布随机数
5.4 产生随机排列
5.5 随机化算法
5.6 随机化素数检验
小结
关键概念
常见错误
网上资源
习题
参考文献
第二部分 应用
第6章 娱乐和游戏
6.1 单词搜索迷宫
6.1.1 理论
6.1.2 Java实现
6.2 Tic-Tac-Toe游戏
6.2.1 α-β剪枝
6.2.2 置换表
6.2.3 计算机象棋
小结
关键概念
常见错误
网上资源
习题
参考文献
第7章 栈和编译器
7.1 平衡符号检查器
7.1.1 基本算法
7.1.2 实现
7.2 简单计算器
7.2.1 后缀机
7.2.2 中缀到后缀的转化
7.2.3 实现
7.2.4 表达式树
小结
关键概念
常见错误
网上资源
习题
参考文献
第8章 实用程序
8.1 文件压缩
8.1.1 前缀编码
8.1.2 赫夫曼算法
8.1.3 实现
8.2 交叉引用生成器
8.2.1 基本思想
8.2.2 Java实现
小结
关键概念
常见错误
网上资源
习题
参考文献
第9章 模拟
9.1 约瑟夫问题
9.1.1 简单实现方案
9.1.2 更高效的算法
9.2 事件驱动模拟
9.2.1 基本思路
9.2.2 实例;调制解调器银行的模拟
小结
关键概念
常见错误
网上资源
习题
第10章 图和路径
10.1 图的定义
10.2 非加权的最短路径问题
10.2.1 理论
10.2.2 Java实现
10.3 非负权值的最短路径算法
10.3.1 理论:Dijkstra算法
10.3.2 Java实现
10.4 含负权值的最短路径问题
10.4.1 理论
10.4.2 Java实现
10.5 无环图的路径问题
10.5.1 拓扑排序
10.5.2 无环图最短路径算法的理论
10.5.3 Java实现
10.5.4 应用:关键路径分析
小结
关键概念
常见错误
网上资源
习题
参考文献
第三部分 实现
第11章 内部类和ArrayList的实现
11.1 迭代器与嵌套类
11.2 迭代器和内部类
11.3 AbstractCollection类
11.4 StringBuilder
11.5 使用迭代器的ArrayList的实现
小结
关键概念
常见错误
网上资源
习题
第12章 栈和队列
12.1 动态数组的实现
12.1.1 栈
12.1.2 队列
12.2 链表实现
12.2.1 栈
12.2.2 队列
12.3 两种实现方式的比较
12.4 java.util.Stack类
12.5 双向队列
小结
关键概念
常见错误
网上资源
习题
第13章 链表
13.1 基本思想
13.1.1 头结点
13.1.2 迭代器类
13.2 Java实现
13.3 双向链表和循环链表
13.4 有序链表
13.5 集合类API中LinkedList类的实现
小结
关键概念
常见错误
网上资源
习题
第14章 树
14.1 普通的树
14.1.1 定义
14.1.2 实现
14.1.3 应用:文件系统
14.2 二叉树
14.3 递归和树
14.4 树的遍历:迭代器类
14.4.1 后序遍历
14.4.2 中序遍历
14.4.3 前序遍历
14.4.4 层次遍历
小结
关键概念
常见错误
网上资源
习题
第15章 二叉查找树
15.1 基本思想
15.1.1 操作
15.1.2 Java实现
15.2 顺序统计量
15.3 二叉查找树操作的分析
15.4 AVL树
15.4.1 性质
15.4.2 单旋转
15.4.3 双旋转
15.4.4 AVL插入小结
15.5 红黑树
15.5.1 自下而上的插入
15.5.2 自上而下的红黑树
15.5.3 Java实现
15.5.4 自上而下的删除
15.6 AA树
15.6.1 插入
15.6.2 删除
15.6.3 Java实现
15.7 集合类APl中TreeSet类和TreeMap类的实现
15.8 B树
小结
关键概念
常见错误
网上资源
习题
参考文献
第16章 散列表
16.1 基本概念
16.2 散列函数
16.3 线性探测法
16.3.1 线性探测法的直观分析
16.3.2 实际上所发生的:初始聚类
16.3.3 find操作的分析
16.4 二次探测法
16.4.1 Java实现
16.4.2 二次探测法的分析
16.5 分别链接散列
16.6 散列表与二叉查找树
16.7 散列表的应用
小结
关键概念
常见错误
网上资源
习题
参考文献
第17章 优先级队列:二叉堆
17.1 基本概念
17.1.1 结构性
17.1.2 堆的有序性
17.1.3 允许的操作
17.2 基本操作的实现
17.2.1 插入
17.2.2 deleteMin操作
17.3 buildHeap操作:线性时间的堆构造
17.4 高级操作:decreaseKey和merge
17.5 内排序:堆排序
17.6 外排序
17.6.1 为什么需要新的算法
17.6.2 外排序模型
17.6.3 简单算法
17.6.4 多路归并
17.6.5 多阶段归并
17.6.6 置换选择法
小结
关键概念
常见错误
网上资源
习题
参考文献
第四部分 高级数据结构
第18章 伸展树
18.1 自调整和均摊法的分析
18.1.1 均摊法时间限度
18.1.2 简单的自调整策略(并不管用)
18.2 基本的自底向上的伸展树
18.3 基本的伸展树操作
18.4 自底向上伸展的分析
18.5 自顶向下的伸展树
18.6 自项向下伸展树的实现
18.7 伸展树与其他搜索树的比较
小结
关键概念
常见错误
网上资源
习题
参考文献
第19章 归并优先级队列
19.1 斜堆
19.1.1 归并是基本操作
19.1.2 满足堆有序性的树的简化归并
19.1.3 斜堆:一个简单的修改
19.1.4 斜堆的分析
19.2 偶堆
19.2.1 偶堆操作
19.2.2 偶堆的实现
19.2.3 应用:Dijkstra最短加权路径算法
小结
关键概念
常见错误
网上资源
习题
参考文献
第20章 不相交集类
20.1 等价关系
20.2 动态等价及应用
20.2.1 应用:生成迷宫
20.2.2 应用:最小生成树
20.2.3 应用:最近的共同祖先问题
20.3 快速查找算法
20.4 快速并算法
20.4.1 智能并算法
20.4.2 路径压缩
20.5 Java实现
20.6 按秩并和路径压缩的最坏情况
小结
关键概念
常见错误
网上资源
习题
参考文献
附录A 运算符
附录B 位运算符
?WC`x
第一部分 算法和构件块
第1章 算法分析
1.1 什么是算法分析
1.2 算法运行时间的实例
1.3 连续子序列最大和的问题
1.3.1 简单的O(N〓)算法
1.3.2 改进的O(N〓)算法
1.3.3 线性算法
1.4 一般的大O规则
1.5 对数
1.6 静态查找问题
1.6.1 顺序查找
1.6.2 二分搜索
1.6.3 插值查找
1.7 算法分析的检查
1.8 大O分析的局限性
小结
关键概念
常见错误
网上资源
习题
参考文献
第2章 集合类API
2.1 引言
2.2 迭代器模式
2.2.1 基本的迭代器设计
2.2.2 基于继承的迭代器和工厂方法
2.3 集合类API:容器和迭代器
2.3.1 Collection接口
2.3.2 Iterator接口
2.4 泛型算法
2.4.1 Comparator函数对象
2.4.2 Collection类
2.4.3 二分搜索
2.4.4 排序
2.5 List接口
2.5.1 ListIterator接口
2.5.2 LinkedList类
2.6 栈和队列
2.6.1 栈
2.6.2 栈与计算机语言
2.6.3 队列
2.6.4 集合类API中的栈和队列
2.7 集合
2.7.1 TreeSet类
2.7.2 HashSet类
2.B 映射
2.9 优先级队列
小结
关键概念
常见错误
网上资源
习题
参考文献
第3章 递归
3.1 什么是递归
3.2 背景:数学归纳法证明
3.3 基本的递归
3.3.1 以任何数制打印数
3.3.2 为什么可行
3.3.3 原理解析
3.3.4 太多的递归可能是危险的
3.3.5 树的预习
3.3.6 其他实例
3.4 数值应用
3.4.1 模运算
3.4.2 模的幂运算
3.4.3 最大公因子和乘法逆元素
3.4.4 RSA密码系统
3.5 分治算法
3.5.1 连续子序列最大和的问题
3.5.2 对一个基本的分治情况的分析
3.5.3 分治算法运行时间的通用上界
3.6 动态规划
3.7 回溯
小结
关键概念
常见错误
网上资源
习题
参考文献
第4章 排序算法
4.1 排序为什么重要
4.2 预备知识
4.3 插入排序及其他简单排序算法的分析
4.4 谢尔排序
4.5 归并排序
4.5.1 有序数组的线性时间合并
4.5.2 归并排序算法
4.6 快速排序
4.6.1 快速排序算法
4.6.2 快速排序的分析
4.6.3 挑选中心点
4.6.4 一种划分策略
4.6.5 键等于中心点
4.6.6 三个元素的中值划分
4.6.7 小规模数组
4.6.8 Java快速排序程序
4.7 快速选择
4.8 排序的下界
小结
关键概念
常见错误
网上资源
习题
参考文献
第5章 随机化
5.1 为什么需要随机数
5.2 随机数生成器
5.3 非均匀分布随机数
5.4 产生随机排列
5.5 随机化算法
5.6 随机化素数检验
小结
关键概念
常见错误
网上资源
习题
参考文献
第二部分 应用
第6章 娱乐和游戏
6.1 单词搜索迷宫
6.1.1 理论
6.1.2 Java实现
6.2 Tic-Tac-Toe游戏
6.2.1 α-β剪枝
6.2.2 置换表
6.2.3 计算机象棋
小结
关键概念
常见错误
网上资源
习题
参考文献
第7章 栈和编译器
7.1 平衡符号检查器
7.1.1 基本算法
7.1.2 实现
7.2 简单计算器
7.2.1 后缀机
7.2.2 中缀到后缀的转化
7.2.3 实现
7.2.4 表达式树
小结
关键概念
常见错误
网上资源
习题
参考文献
第8章 实用程序
8.1 文件压缩
8.1.1 前缀编码
8.1.2 赫夫曼算法
8.1.3 实现
8.2 交叉引用生成器
8.2.1 基本思想
8.2.2 Java实现
小结
关键概念
常见错误
网上资源
习题
参考文献
第9章 模拟
9.1 约瑟夫问题
9.1.1 简单实现方案
9.1.2 更高效的算法
9.2 事件驱动模拟
9.2.1 基本思路
9.2.2 实例;调制解调器银行的模拟
小结
关键概念
常见错误
网上资源
习题
第10章 图和路径
10.1 图的定义
10.2 非加权的最短路径问题
10.2.1 理论
10.2.2 Java实现
10.3 非负权值的最短路径算法
10.3.1 理论:Dijkstra算法
10.3.2 Java实现
10.4 含负权值的最短路径问题
10.4.1 理论
10.4.2 Java实现
10.5 无环图的路径问题
10.5.1 拓扑排序
10.5.2 无环图最短路径算法的理论
10.5.3 Java实现
10.5.4 应用:关键路径分析
小结
关键概念
常见错误
网上资源
习题
参考文献
第三部分 实现
第11章 内部类和ArrayList的实现
11.1 迭代器与嵌套类
11.2 迭代器和内部类
11.3 AbstractCollection类
11.4 StringBuilder
11.5 使用迭代器的ArrayList的实现
小结
关键概念
常见错误
网上资源
习题
第12章 栈和队列
12.1 动态数组的实现
12.1.1 栈
12.1.2 队列
12.2 链表实现
12.2.1 栈
12.2.2 队列
12.3 两种实现方式的比较
12.4 java.util.Stack类
12.5 双向队列
小结
关键概念
常见错误
网上资源
习题
第13章 链表
13.1 基本思想
13.1.1 头结点
13.1.2 迭代器类
13.2 Java实现
13.3 双向链表和循环链表
13.4 有序链表
13.5 集合类API中LinkedList类的实现
小结
关键概念
常见错误
网上资源
习题
第14章 树
14.1 普通的树
14.1.1 定义
14.1.2 实现
14.1.3 应用:文件系统
14.2 二叉树
14.3 递归和树
14.4 树的遍历:迭代器类
14.4.1 后序遍历
14.4.2 中序遍历
14.4.3 前序遍历
14.4.4 层次遍历
小结
关键概念
常见错误
网上资源
习题
第15章 二叉查找树
15.1 基本思想
15.1.1 操作
15.1.2 Java实现
15.2 顺序统计量
15.3 二叉查找树操作的分析
15.4 AVL树
15.4.1 性质
15.4.2 单旋转
15.4.3 双旋转
15.4.4 AVL插入小结
15.5 红黑树
15.5.1 自下而上的插入
15.5.2 自上而下的红黑树
15.5.3 Java实现
15.5.4 自上而下的删除
15.6 AA树
15.6.1 插入
15.6.2 删除
15.6.3 Java实现
15.7 集合类APl中TreeSet类和TreeMap类的实现
15.8 B树
小结
关键概念
常见错误
网上资源
习题
参考文献
第16章 散列表
16.1 基本概念
16.2 散列函数
16.3 线性探测法
16.3.1 线性探测法的直观分析
16.3.2 实际上所发生的:初始聚类
16.3.3 find操作的分析
16.4 二次探测法
16.4.1 Java实现
16.4.2 二次探测法的分析
16.5 分别链接散列
16.6 散列表与二叉查找树
16.7 散列表的应用
小结
关键概念
常见错误
网上资源
习题
参考文献
第17章 优先级队列:二叉堆
17.1 基本概念
17.1.1 结构性
17.1.2 堆的有序性
17.1.3 允许的操作
17.2 基本操作的实现
17.2.1 插入
17.2.2 deleteMin操作
17.3 buildHeap操作:线性时间的堆构造
17.4 高级操作:decreaseKey和merge
17.5 内排序:堆排序
17.6 外排序
17.6.1 为什么需要新的算法
17.6.2 外排序模型
17.6.3 简单算法
17.6.4 多路归并
17.6.5 多阶段归并
17.6.6 置换选择法
小结
关键概念
常见错误
网上资源
习题
参考文献
第四部分 高级数据结构
第18章 伸展树
18.1 自调整和均摊法的分析
18.1.1 均摊法时间限度
18.1.2 简单的自调整策略(并不管用)
18.2 基本的自底向上的伸展树
18.3 基本的伸展树操作
18.4 自底向上伸展的分析
18.5 自顶向下的伸展树
18.6 自项向下伸展树的实现
18.7 伸展树与其他搜索树的比较
小结
关键概念
常见错误
网上资源
习题
参考文献
第19章 归并优先级队列
19.1 斜堆
19.1.1 归并是基本操作
19.1.2 满足堆有序性的树的简化归并
19.1.3 斜堆:一个简单的修改
19.1.4 斜堆的分析
19.2 偶堆
19.2.1 偶堆操作
19.2.2 偶堆的实现
19.2.3 应用:Dijkstra最短加权路径算法
小结
关键概念
常见错误
网上资源
习题
参考文献
第20章 不相交集类
20.1 等价关系
20.2 动态等价及应用
20.2.1 应用:生成迷宫
20.2.2 应用:最小生成树
20.2.3 应用:最近的共同祖先问题
20.3 快速查找算法
20.4 快速并算法
20.4.1 智能并算法
20.4.2 路径压缩
20.5 Java实现
20.6 按秩并和路径压缩的最坏情况
小结
关键概念
常见错误
网上资源
习题
参考文献
附录A 运算符
附录B 位运算符
?WC`x
Data structures and problem solving using Java
光盘服务联系方式: 020-38250260 客服QQ:4006604884
云图客服:
用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问
Video Player
×
Audio Player
×
pdf Player
×