数据结构与算法:C#语言描述
分類: 图书,计算机/网络,数据库,数据库理论,
作者: (美)麦克米伦(McMillan,M)著;吕秀锋,崔睿译
出 版 社: 人民邮电出版社
出版时间: 2009-5-1字数:版次: 1页数: 260印刷时间:开本: 16开印次:纸张:I S B N : 9787115204271包装: 平装编辑推荐
“这是一本绝佳的介绍C#语言数据结构的优秀著作,对于数据结构课程极具价值!”
——CHOICE杂志
随着.NET框架的广泛应用,C#已经成为最受欢迎的程序设计语言之一。但是,市面上尚无用C#语言讲述数据结构和算法的图书,广大C#程序员不得不将自 己转换C++或Java描述的数据结构,费时费力,而且容易出错。
本书填补了这一空白。而且更加难能可贵的是,作者基于自己多年的教学和实践经验,从开发实战出发,采用了一种与一般数据结构图书不同的讲解方式:充分利 用.NET框架中现成的数据结构类,先讲述各种数据结构怎么在开发中选用,怎样用来解决实际问题,在有了感性认识之后,再深入研究如何实现;同时,用更加 实用的时间测试方法代替常规的大O表示法来分析算法性能,避免了复杂的数学推导。书中除涵盖了数组、广义表、链表、散列表、树、图、排序、搜索等常规数据 结构和算法外,还讨论了概率和动态规划等方面的高级算法。
中文版对原书的代码进行了全面的调试,改正了不少原版存在的问题,保证了代码的质量和技术内容的准确性。
本书是C#程序员不可或缺的实用参考书,也适合作为应用型高校相关专业.NET平台开发课程的教材。
内容简介
本书是在.NET框架下用C#语言实现数据结构和算法的第一本全面的参考书。本书介绍的方法非常实用,采用了时间测试而非大O表示法来分析算法性能。内容涵盖了数据结构和算法的基本原理,涉及数组、广义表、链表、散列表、树、图、排序搜索算法以及更多概率算法和动态规则等高级算法。此外,书中还提供了.NET框架类库中的C#语言实现的数据结构和算法。
本书适合作为C#数据结构课程的教材,同时也适合C#专业人士阅读。
目录
第1章Collections类、泛型类和Timing类概述
1.1群集的定义
1.2群集的描述
1.2.1直接存取群集
1.2.2顺序存取群集
1.2.3层次群集
1.2.4组群集
1.3CollectionBase类
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.3Timing Test类
小结
练习
第2章数组和ArrayList
2.1数组基本概念
2.1.1数组的声明和初始化
2.1.2数组元素的设置和存取访问
2.1.3检索数组元数据的方法和属性
2.1.4多维数组
2.1.5参数数组
2.1.6锯齿状数组
2.2ArrayList类
2.2.1ArrayList类的成员
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.2Stack类的实现
5.2Stack类
5.2.1Stack构造器方法
5.2.2主要的栈操作
5.2.3Peek方法
5.2.4Clear方法
5.2.5Contains方法
5.2.6CopyTo方法和ToArray方法
5.2.7Stack类的实例:十进制向多种进制的转换
5.3队列、Queue类以及Queue类的实现
5.3.1队列的操作
5.3.2Queue的实现
5.3.3Queue类:实例应用
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.6BitArray类
6.6.1使用BitArray类
6.6.2更多BitArray类的方法和属性
6.7用BitArray来编写埃拉托斯特尼筛法
6.8BitArray与数组在埃拉托斯特尼筛法上的比较
小结
练习
第7章字符串、String类和StringBuilder类
第8章模式匹配和文本处理
第9章构建字典:DictionaryBase类和SortedList类
第10章散列和Hashtable类
第11章链表
第12章二叉树和二叉查找树
第13章集合
第14章高级排序算法
第15章用于查找的高级数据结构和算法
第16章图和图的算法
第17章高级算法
参考文献
索引
书摘插图
第1章Collections类、泛型类和Timing类概述
本书采用c#语言来讨论数据结构与算法的开发和实现。书中用到的数据结构都可以在.NET框架类库System.Collections中找到。本章会逐步展开群集的概念,首先讨论自身特有的collection类的实现(采用数组作为我们实现的基础),接着会介绍.NET框架中Collection类的内容。
泛型是c#语言2.0版新增加的一个重要补充,它允许C#程序员可以独立地或者在一个类中编写函数的某一个版本,而且不需要为了不同的数据类型而多次重载此函数。c#言2.0版还为几种system.Collections数据结构实现泛型提供了一个专门的库System.Collections.Generic。本章将向读者介绍泛型编程。
本章最后会介绍一种用户定制的类——Timing类,后续的几个章节将会用它来衡量数据结构与/或算法的性能。这个类将取代大O分析法,这不是因为大O分析法不重要,而是因为本书采取了一种更为实用的方法来分析数据结构与算法。
1.1 群集的定义
群集(Collection)是一种结构化的数据类型,它存储数据并且提供数据向/从群集中添加、删除和更新操作,以及对群集的不同属性值的设置与返回操作。
群集分为线性群集和非线性群集。线性群集是一张元素列表,表中的元素顺次相连。线性群集中的元素通常由位置来决定次序(例如,第一个元素、第二个元素、第三个元素,依此类推)。在现实世界中,购物清单就是很好的线性群集实例,而在计算机中(当然这也是真实世界)则把数组设计成线性群集。
……