数据结构与算法(C#语言描述)
8推荐 收藏
10.0K阅读
图灵计算机科学丛书

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

Michael McMillan (作者) 吕秀锋 , 崔睿 (译者)
终止销售
本书是在.NET框架下用C#语言实现数据结构和算法的第一本全面的参考书。本书介绍的方法非常实用,采用了时间测试而非大O表示法来分析算法性能。内容涵盖了数据结构和算法的基本原理,涉及数组、广义表、链表、散列表、树、图、排序搜索算法以及更多概率算法和动态规则等高级算法。此外,书中还提供了.NET框架类库中的C#语言实现的数据结构和算法。
本书适合作为C#数据结构课程的教材,同时也适合C#专业人士阅读。

收藏本书能做什么?

有情况的时候会收到通知,比如电子书发布等。

纸质书
¥49.00

其他购买方式?

出版信息

  • 书  名数据结构与算法(C#语言描述)
  • 系列书名图灵计算机科学丛书
  • 执行编辑关于本书的内容有任何问题,请联系 傅志红
  • 出版日期2009-04-20
  • 书  号978-7-115-20427-1
  • 定  价49.00 元
  • 页  数270
  • 开  本16开
  • 出版状态终止销售
  • 原书名Data Structures and Algorithms Using C#
  • 原书号978-0-521-67015-9

同系列书

目录

第1章 Collections类、泛型类和Timing类概述    1
1.1 群集的定义    1
1.2 群集的描述    1
1.2.1 直接存取群集    2
1.2.2 顺序存取群集    4
1.2.3 层次群集    6
1.2.4 组群集    7
1.3 CollectionBase类    8
1.3.1 用ArrayList实现Collection类    8
1.3.2 定义Collection类    8
1.3.3 实现Collection类    8
1.4 泛型编程    10
1.5 时间测试    12
1.5.1 一个简单化的时间测试    12
1.5.2 用于.NET环境的时间测试    13
1.5.3 Timing Test类    14
小结    16
练习    17
第2章 数组和ArrayList    18
2.1 数组基本概念    18
2.1.1 数组的声明和初始化    18
2.1.2 数组元素的设置和存取访问    19
2.1.3 检索数组元数据的方法和属性    19
2.1.4 多维数组    20
2.1.5 参数数组    21
2.1.6 锯齿状数组    22
2.2 ArrayList类    23
2.2.1 ArrayList类的成员    23
2.2.2 应用ArrayList类    24
小结    27
练习    27
第3章 基础排序算法    29
3.1 排序算法    29
3.1.1 数组类测试环境    29
3.1.2 冒泡排序    31
3.1.3 检验排序过程    32
3.1.4 选择排序    33
3.1.5 插入排序    35
3.2 基础排序算法的时间比较    36
小结    37
练习    38
第4章 基础查找算法    39
4.1 顺序查找    39
4.1.1 查找最小值和最大值    41
4.1.2 自组织数据加快顺序查找速度    42
4.2 二叉查找算法    43
4.3 递归二叉查找算法    45
小结    47
练习    47
第5章 栈和队列    48
5.1 栈、栈的实现以及Stack类    48
5.1.1 栈的操作    48
5.1.2 Stack类的实现    49
5.2 Stack类    51
5.2.1 Stack构造器方法    51
5.2.2 主要的栈操作    52
5.2.3 Peek方法    54
5.2.4 Clear方法    54
5.2.5 Contains方法    54
5.2.6 CopyTo方法和ToArray方法    54
5.2.7 Stack类的实例:十进制向多种进制的转换    55
5.3 队列、Queue类以及Queue类的实现    56
5.3.1 队列的操作    56
5.3.2 Queue的实现    57
5.3.3 Queue类:实例应用    58
5.3.4 用队列排序数据    61
5.3.5 源自Queue类的优先队列    64
小结    65
练习    66
第6章 BitArray类    67
6.1 激发的问题    67
6.2 位和位操作    68
6.2.1 二进制数制系统    68
6.2.2 处理二进制数:按位运算符和移位运算符    69
6.3 按位运算符的应用    70
6.4 整数转换成二进制形式的应用程序    74
6.5 移位的示例应用程序    76
6.6 BitArray类    78
6.6.1 使用BitArray类    78
6.6.2 更多BitArray类的方法和属性    81
6.7 用BitArray来编写埃拉托斯特尼筛法    81
6.8 BitArray与数组在埃拉托斯特尼筛法上的比较    83
小结    83
练习    84
第7章 字符串、String类和StringBuilder类    85
7.1 String类的应用    85
7.1.1 创建String对象    85
7.1.2 常用的String类方法    86
7.1.3 Split方法和Join方法    88
7.1.4 比较字符串的方法    90
7.1.5 处理字符串的方法    92
7.2 StringBuilder类    98
7.2.1 构造StringBuilder对象    98
7.2.2 获取并且设置关于StringBuilder对象的信息    98
7.2.3 修改StringBuilder对象    99
7.3 String类与StringBuilder的性能比较    101
小结    103
练习    103
第8章 模式匹配和文本处理    105
8.1 正则表达式概述    105
8.2 数量词    107
8.3 使用字符类    109
8.4 用断言修改正则表达式    111
8.5 使用分组构造    112
8.5.1 匿名组    112
8.5.2 命名组    112
8.5.3 零宽度正向预搜索断言和零宽度反向预搜索断言    113
8.6 CapturesCollection类    114
8.7 正则表达式的选项    115
小结    116
练习    116
第9章 构建字典:DictionaryBase类和SortedList类    117
9.1 DictionaryBase类    117
9.1.1 DictionaryBase类的基础方法和属性    117
9.1.2 其他的DictionaryBase方法    119
9.2 泛型KeyValuePair类    121
9.3 SortedList类    122
小结    123
练习    123
第10章 散列和Hashtable类    125
10.1 散列概述    125
10.2 选择散列函数    125
10.3 查找散列表中数据    127
10.4 解决冲突    128
10.4.1 桶式散列法    128
10.4.2 开放定址法    129
10.4.3 双重散列法    130
10.5 Hashtable类    130
10.5.1 实例化Hashtable对象并且给其添加数据    130
10.5.2 从散列表中分别检索键和数值    131
10.5.3 检索基于键的数值    132
10.5.4 Hashtable类的实用方法    133
10.6 Hashtable的应用:计算机术语表    133
小结    136
练习    136
第11章 链表    137
11.1 数组存在的问题    137
11.2 链表的定义    137
11.3 面向对象链表的设计    138
11.3.1 Node类    138
11.3.2 LinkedList类    139
11.4 链表设计的改进方案    141
11.4.1 双向链表    141
11.4.2 循环链表    143
11.5 使用Iterator类    146
11.5.1 新的LinkedList类    148
11.5.2 实例化Iterator类    148
11.6 泛型Linked List类和泛型Node类    152
小结    154
练习    154
第12章 二叉树和二叉查找树    155
12.1 树的定义    155
12.2 二叉树    156
12.2.1 构造二叉查找树    157
12.2.2 遍历二叉查找树    159
12.2.3 在二叉查找树中查找节点和最大/最小值    161
12.2.4 从二叉查找树中移除叶子节点    162
12.2.5 删除带有一个子节点的节点    163
12.2.6 删除带有两个子节点的节点    164
小结    167
练习    167
第13章 集合    169
13.1 集合的基础定义、操作及属性    169
13.1.1 集合的定义    169
13.1.2 集合的操作    169
13.1.3 集合的属性    169
13.2 第一个用散列表的Set类的实现    170
13.2.1 类数据成员和构造器方法    170
13.2.2 Add方法    170
13.2.3 Remove方法和Size方法    171
13.2.4 Union方法    171
13.2.5 Intersection方法    172
13.2.6 Subset方法    172
13.2.7 Difference方法    172
13.2.8 测试CSet实现的程序    173
13.3 CSet类的BitArray实现    174
13.3.1 使用BitArray实现的概述    174
13.3.2 BitArray集合的实现    175
小结    177
练习    177
第14章 高级排序算法    178
14.1 希尔排序算法    178
14.2 归并排序算法    179
14.3 堆排序算法    182
14.4 快速排序算法    185
14.4.1 快速排序算法的描述    186
14.4.2 快速排序算法的代码    187
14.4.3 快速排序算法的改进    188
小结    188
练习    188
第15章 用于查找的高级数据结构和算法    189
15.1 AVL树    189
15.1.1 AVL树的基本原理    189
15.1.2 AVL树的实现    190
15.2 红黑树    192
15.2.1 红黑树规则    192
15.2.2 红黑树的插入    193
15.2.3 红黑树实现代码    194
15.3 跳跃表    198
15.3.1 跳跃表的基本原理    198
15.3.2 跳跃表的实现    199
小结    203
练习    203
第16章 图和图的算法    204
16.1 图的定义    204
16.2 由图模拟真实世界系统    205
16.3 图类    205
16.3.1 顶点的表示    205
16.3.2 边的表示    206
16.3.3 图的构造    206
16.3.4 图的第一个应用:拓扑排序    208
16.3.5 拓扑排序算法    208
16.3.6 拓扑排序算法的实现    208
16.4 图的搜索    211
16.4.1 深度优先搜索    211
16.4.2 广度优先搜索    213
16.5 最小生成树    215
16.6 查找最短路径    218
16.6.1 加权图    218
16.6.2 确定最短路径的Dijkstra算法    218
16.6.3 Dijkstra算法的代码    220
小结    226
练习    226
第17章 高级算法    227
17.1 动态规划    227
17.1.1 动态规划实例:计算斐波纳契数列    227
17.1.2 寻找最长公共子串    230
17.1.3 背包问题    232
17.2 贪心算法    234
17.2.1 贪心算法实例:找零钱问题    234
17.2.2 采用哈夫曼编码的数据压缩    236
17.2.3 用贪心算法解决背包问题    243
小结    245
练习    246
参考文献    247
索引    248
  • 这本书很好。但我在看书做题的过程中,有时会碰到困难,不知是否有答案下载呢?
    sky17205  发表于 2009-05-30 12:22:57
    推荐
    • 随书下载就有

      Coc  发表于 2017-05-17 15:17:07
  • 内容不错,哪里有练习答案下载?
    zkliuxin  发表于 2010-10-06 16:27:20
    推荐
    • 随书下载就有

      Coc  发表于 2017-05-17 15:17:16
  • 求课后答案代码 感觉不尽
    kobe发  发表于 2011-09-20 12:13:11
    推荐
    • 随书下载就有

      Coc  发表于 2017-05-17 15:16:52
  • 为什么终止销售了
    angerxzer  发表于 2018-11-26 16:17:38
    推荐
    • 没有库存,也不再重印了。

      傅志红  发表于 2018-11-26 16:32:17