数据结构与算法:C#语言描述

作 者:
Michael McMillan
日 期:
2009年04月
ISBN:
9787115204271

简介

《数据结构与算法C#语言描述》是在.NET框架下用C#语言实现数据结构和算法的 本全面的参考书。《数据结构与算法C#语言描述》介绍的方法非常实用,采用了时间测试而非大O表示法来分析算法性能。内容涵盖了数据结构和算法的基本原理,涉及数组、广义表、链表、散列表、树、图、排序搜索算法以及更多概率算法和动态规则等高级算法。此外,书中还提供了.NET框架类库中的C#语言实现的数据结构和算法。

目录

第1章 Collections类、泛型类和Timing类概述
1.1 群集的定义
1.2 群集的描述
1.2.1 直接存取群集
1.2.2 顺序存取群集
1.2.3 层次群集
1.2.4 组群集
1.3 CollectionBase类
1.3.1 用ArrayList实现Collection类
1.3.2 定义Collection类
1.3.3 实现Collection类
1.4 泛型编程
1.5 时间测试
1.5.1 一个简单化的时间测试
1.5.2 用于.NET环境的时间测试
1.5.3 TimingTest类
小结
练习

第2章 数组和ArrayList
2.1 数组基本概念
2.1.1 数组的声明和初始化
2.1.2 数组元素的设置和存取访问
2.1.3 检索数组元数据的方法和属性
2.1.4 多维数组
2.1.5 参数数组
2.1.6 锯齿状数组
2.2 ArrayList类
2.2.1 ArrayList类的成员
2.2.2 应用ArrayList类
小结
练习

第3章 基础排序算法
3.1 排序算法
3.1.1 数组类测试环境
3.1.2 冒泡排序
3.1.3 检验排序过程
3.1.4 选择排序
3.1.5 插入排序
3.2 基础排序算法的时间比较
小结
练习


第4章 基础查找算法
4.1 顺序查找
4.1.1 查找最小值和最大值
4.1.2 自组织数据加快顺序查找速度
4.2 二叉查找算法
4.3 递归二叉查找算法
小结
练习

第5章 栈和队列
5.1 栈、栈的实现以及Stack类
5.1.1 栈的操作
5.1.2 Stack类的实现
5.2 Stack类
5.2.1 Stack构造器方法
5.2.2 主要的栈操作
5.2.3 Peek方法
5.2.4 Clear方法
5.2.5 Contains方法
5.2.6 CopyTo方法和ToArray方法
5.2.7 Stack类的实例:十进制向多种进制的转换
5.3 队列、Queue类以及Queue类的实现
5.3.1 队列的操作
5.3.2 Queue的实现
5.3.3 Queue类:实例应用
5.3.4 用队列排序数据
5.3.5 源自Queue类的优先队列
小结
练习

第6章 BitArray类
6.1 激发的问题
6.2 位和位操作
6.2.1 二进制数制系统
6.2.2 处理二进制数:按位运算符和移位运算符
6.3 按位运算符的应用
6.4 整数转换成二进制形式的应用程序
6.5 移位的示例应用程序
6.6 BitArray类
6.6.1 使用BitArray类
6.6.2 更多BitArray类的方法和属性
6.7 用BitArray来编写埃拉托斯特尼筛法
6.8 BitArray与数组在埃拉托斯特尼筛法上的比较
小结
练习

第7章 字符串、String类和StringBuioder类
7.1 String类的应用
7.1.1 创建String对象
7.1.2 常用的String类方法
7.1.3 Split方法和Join方法
7.1.4 比较字符串的方法
7.1.5 处理字符串的方法
7.2 StringBuilder类
7.2.1 构造StringBuilder对象
7.2.2 获取并且设置关于sbingBuildcr对象的信息
7.2.3 修改StringBuilder对象
7.3 String类与StringBuilder的性能比较
小结
练习

第8章 模式匹配和文本处理
8.1 正则表达式概述
8.2 数量词
8.3 使用字符类
8.4 用断言修改正则表达式
8.5 使用分组构造
8.5.1 匿名组
8.5.2 命名组
8.5.3 零宽度正向预搜索断言和零宽度反向预搜索断言
8.6 CapturesCollection类
8.7 正则表达式的选项
小结
练习

第9章 构建字典:DictionaryBase类和SortedList类
9.1 DictionaryBase类
9.1.1 DictionaryBase类的基础方法和属性
9.1.2 其他的DictionaryBase方法
9.2 泛型KeyValuePair类
9.3 Sorted[Jst类.。
小结
练习

第10章 散列和Hashtaboe类
10.1 散列概述
10.2 选择散列函数
10.3 查找散列表中数据
10.4 解决冲突.
10.4.1 桶式散列法
10.4.2 开放定址法
10.4.3 双重散列法
10.5 Hashtable类
10.5.1 实例化Hashtable对象并且给其添加数据
10.5.2 从散列表中分别检索键和数值
10.5.3 检索基于键的数值
10.5.4 Hashtable类的实用方法
]0.6 Hashtable的应用:计算机术语表
小结
练习

第11章 链表
11.1 数组存在的问题
11.2 链表的定义
11.3 面向对象链表的设计
11.3.1 Node类
11.3.2 LinkedList类
11.4 链表设计的改进方案
11.4.1 双向链表
11.4.2 循环链表
11.5 使用Iteratot.类
11.5.1 新的LinkedList类
11.5.2 实例化Iterator类
11.6 泛型工,inked L,ist类和泛型Node类
小结
练习

第12章 二叉树和二叉查找树
12.1 树的定义
12.2 二叉树
12.2.1 构造二叉查找树
12.2.2 遍历二叉查找树
12.2.3 在二叉查找树申查找节点和最大/最小值
12.2.4 从二叉查找树申移除叶子节点
12.2.5 删除带有一个子节点的节点
12.2.6 删除带有两个子节点的节点
小结
练习

第13章 集合
13.1 集合的基础定义、操作及属性
13.1.1 集合的定义
13.1.2 集合的操作
13.1.3 集合的属性
13.2 第一个用散列表的Set类的实现
13.2.1 类数据成员和构造器方法
13.2.2 Add方法
13.2.3 Remove方法和Size方法
13.2.4 Union方法
13.2.5 Intersection方法
13.2.6 Subset方法
13.2.7 Difference方法
13.2.8 测试CSet实现的程序
13.3 CSet类的BitArray实现
13.3.1 使用BitArray实现的概述
13.3.2 BitArray集合的实现
小结
练习

第14章 高级排序算法
14.1 希尔排序算法
14.2 归并排序算法
14.3 堆排序算法
14.4 快速排序算法
14.4.1 快速排序算法的描述
14.4.2 快速排序算法的代码
14.4.3 快速排序算法的改进
小结
练习

第15章 用于查找的高级数据结构和算法
15.1 AVL树
15.1.1 AVL树的基本原理
15.1.2 AVL树的实现
15.2 红黑树
15.2.1 红黑树规则
15.2.2 红黑树的插入
15.2.3 红黑树实现代码
15.3 跳跃表
15.3.1 跳跃表的基本原理
15.3.2 跳跃表的实现
小结
练习

第16章 图和图的算法
16.1 图的定义
16.2 由图模拟真实世界系统
16.3 图类
16.3.1 顶点的表示
16.3.2 边的表示
16.3.3 图的构造
16.3.4 图的第一个应用:拓扑排序
16.3.5 拓扑排序算法
16.3.6 拓扑排序算法的实现
16.4 图的搜索
16.4.1 深度优先搜索
16.4.2 广度优先搜索
16.5 最小生成树
16.6 查找最短路径
16.6.1 加权图
16.6.2 确定最短路径的Dikstra算法
16.6.3 Dikstra算法的代码
小结
练习

第17章 高级算法
17.1 动态规划
17.1.1 动态规划实例:计算斐波纳契数列
17.1.2 寻找最长公共子串
17.1.3 背包问题
17.2 贪心算法
17.2.1 贪心算法实例:找零钱问题
17.2.2 采用哈夫曼编码的数据压缩
17.2.3 用贪心算法解决背包问题
小结
练习

参考文献
索引

下载

公众号订阅号
请扫描二维码进入公众号发送消息 geekgist 获取提取码

消息“GeekGist”不区分大小写,提取码有效期为一个月左右,输入后会自动存储在本地,下次无需重复输入。