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

4星(超过85%的资源)
所需积分/C币:1 2013-12-23 10:34:58 10.08MB PDF
38
收藏 收藏
举报

《数据结构与算法C#语言描述》是在.NET框架下用C#语言实现数据结构和算法的第一本全面的参考书。《数据结构与算法C#语言描述》介绍的方法非常实用,采用了时间测试而非大O表示法来分析算法性能。内容涵盖了数据结构和算法的基本原理,涉及数组、广义表、链表、散列表、树、图、排序搜索算法以及更多概率算法和动态规则等高级算法。此外,书中还提供了.NET框架类库中的C#语言实现的数据结构和算法。   《数据结构与算法C#语言描述》适合作为C#数据结构课程的教材,同时也适合C#专业人士阅读。 随着.NET框架的广泛应用,C#已经成为最受欢迎的程序设计语言之一。但是,市面上尚无用C#语言讲述数据结构和算法的图书,广大C#程序员不得不将自 己转换C++或Java描述的数据结构,费时费力,而且容易出错。   本书填补了这一空白。而且更加难能可贵的是,作者基于自己多年的教学和实践经验,从开发实战出发,采用了一种与一般数据结构图书不同的讲解方式:充分利 用.NET框架中现成的数据结构类,先讲述各种数据结构怎么在开发中选用,怎样用来解决实际问题,在有了感性认识之后,再深入研究如何实现;同时,用更加 实用的时间测试方法代替常规的大O表示法来分析算法性能,避免了复杂的数学推导。书中除涵盖了数组、广义表、链表、散列表、树、图、排序、搜索等常规数据 结构和算法外,还讨论了概率和动态规划等方面的高级算法。   中文版对原书的代码进行了全面的调试,改正了不少原版存在的问题,保证了代码的质量和技术内容的准确性。   本书是C#程序员不可或缺的实用参考书,也适合作为应用型高校相关专业.NET平台开发课程的教材。
目录 前言 前提条件1 章节组织1 第1章 Collections尖、 泛型类和Tmng类概述18 11群集的定义18 12群集的措述18 121直接存取群集18 12.2顺序存取群集20 123层次群集21 124组群集22 13 Collection base类22 131用 ArrayLists实现 Collection类22 132定义 Collection类23 133实现 Collection类23 14范型编程24 15时间测试25 151一个简单化的时问测试25 152用于NET环境的时间测试26 153 Timing Test类27 小结28 练习28 第2章数组和 ArrayLists30 21数组基本概念30 211数组的声明和初始化30 2.1.2数组元素的设置和存取访问30 21.3取回数组元数据的方法和属性31 214多维数组31 215参数数组32 21.6锯齿状数组32 22 Array List类33 221 ArrayList类的成员34 222应用 Array List类34 ArrayList grades new arrayList(: 34 小结36 练习36 第3章基础排序算法38 31排序算法38 11数组类测试环境38 312冒泡排序39 313检验排序过程40 314选择排序40 315插入排序 32基础排序算法的时间比较42 小结 练习43 第4章基础查找算法44 41顺序查找算法44 41.1查找最小值和最大值45 4.1.2自组织数据加快顺序查找速度46 4,2叉查找算法47 4.3递归二叉查找算法48 小结49 练习49 第5章堆栈和队列50 51堆栈、堆栈的实现以及 STACK类50 51.1堆栈的操作50 5.12 Stack类的实现50 52 STACK类5 5,2.1 Stack构造器方法52 52.2主要的堆栈操作52 523Peek方法54 524C|ear方法54 525 ontains方法54 52.6 Copy to方法和 ToArray方法54 527 Stack类的实例:十进制向多和进制的转换54 5.3队列、 QUEUE类以及 QUEUE类的实现55 531队列的操作55 532 Queue的实现56 5.33 Queue类:实例应用56 534用队列存储数据58 5.35源自 Queue类的优先队列60 61 练丬61 第6章 BitArray类63 6.1激发的问题63 6,2位和位操作63 621二进制数制系统64 62.2处理二进制数:按位运算符和位移运算符64 63按位运算符的应用65 6.31位移运算符66 64整数转换成二进制形式的应用程序66 65位移的示例应用程序68 6. 6BITARRAY 类 59 661使用 BitArray类69 662更多 Bitarray类的方法和属性70 67用 BITARRAY来编写埃拉托斯特尼筛法71 68 BITARRAY与数组在埃拉托斯特尼筛法上的比较72 小结72 练习72 第7章字符串、 String类和 String Builder类73 7.15TR|NG类的应用73 7.11创建 String对象73 712常用 String类的方法们73 713pit方法和Join方法75 7.14比较字符串的方法76 7.15处理字符串的方法78 7.2 STRINGBUILDER类81 72.1构造 String Builder对象81 7.2.2获取并且设置关于 String Builder对象的信息81 72.3修改 String Builder对象82 73 STRING类与 STRINGBUILDER的性能比较83 小结84 练习85 第8章模式匹配和文本处理86 81正则表达式概述86 81.1概述:使用正则表达式86 82数量词87 83使用字符类88 84用断言修改正则表达式90 85使用分组构造90 851匿名组90 852命名组91 85.3零宽度正向预搜索断言和零宽度反向预搜索断言91 8.6CAPTURESCOLLECTION 3 92 87正则表达式的选项92 小结93 练习93 第9章构建字典: Dictionary Base类和 Sortedlist类94 91 DICTIONARYBASE类94 91 Dictionary Base类的基础方法和属性94 912其他的 Dictionary base方法95 92通用的 KEYVALUEPAIR类96 9350 RTEDLIST类97 931使用 Sortedlist类97 结 97 练习98 第10章散列和 Hashtable类99 101散刎概述 10.2选择散列函数 103查找散列表中数据100 104解决冲突101 1041桶式散列法101 1042开放定址法102 1043双重散列法102 105 HASHTABLE类102 1051实例化 Hashtable对象并且给其添加数据102 1052从散刎表中分别取回关键字和数值103 1053取回基于关键字的数值103 1054 Hashtable类的实用方法104 106 HASHTABLE的应用程序:计算机术语表104 小结106 练习106 第11章链表107 111数组存在的问题107 112链表的定义107 113面向对象链衣的设计108 1131Node类108 1132 Lin ked List类108 114链表设计的改进方案109 1141双向链表110 114.2循环链表111 115使用| TERATOR类113 1151新的 Linkedlist类114 1152实例化 Iterator类114 116通用的 LINKED LIST类和通用的NODE类117 1161通用链表实例117 小结118 练习118 第12章二叉树和二叉查找树19 121树的定义119 122二义树120 1221构造二叉查找树120 12.22遍历叉查找树121 12.2.3在二叉查找树中查找节点和最大/最小值123 12.24从BST中移除叶子节点123 1225删除带有一个了节点的节点124 1226删除带有两个子节点的节点124 小结126 练丬127 第13章集合128 131集合的基础定义、操作及属性128 1311集合的定义128 1312集合的操作128 1313集合的属性128 132第一个用散列表的SET类的实现129 1321类数据成员和构造器方法129 1322Ad方法129 1323 Remove方法和sze方法129 1324 Union方法129 132 intersection方法130 1326 Subset方法130 1327 Difference方法130 1328测试Cset实现的程序130 133CSET类的 BITARRAY实现131 13.31使用 BitArray实现的概述131 1332 BitArray集合的实现132 小结133 练习133 第14章高级排序算法134 141希尔排序算法134 142归并排序算法135 143堆排序算法136 1431构造堆136 144快速排序算法138 1441快速排序算法的描述139 1442快速排序算法的代码139 1443快速排序算法的改进140 小结140 练习140 第15章查找的高级数据结构和算法141 151AL树141 1511AVL树的基本原理141 15.12AML树的实现141 152红黑树143 15.21红黑树规则143 1522红黑树的插入143 1523红黑树实现代码144 15.3跳跃表146 1531跳跃表的基木原理146 15.3.2跳跃表的实现147 结149 练习150 第16章图和图的算法151 161图的定义151 162由图模拟真实世界系统151 163图类151 1631顶点的表示152 1632边的表示152 1633图的构造152 1634图的第一个应用:拓扑排序153 1635拓扑排序算法154 1636拓扑排序算法的实现154 164图的搜索156 1641深度优先搜索156 1642广度优先搜索157 165最小生成树158 1651最小生成树算法158 16.6查找最短路径159 1661加权图159 16.62确定最短路径的 Dijkstra算法160 1663 Dijkstra算法的代码160 164 练习164 第17章高级算法165 17.1动态规划165 171.1动态规划实例:计算斐波纳契数列165 17.1.2寻找最长公共子串167 1713背包问题168 172贪心算法169 17.2.1贪心算法实例:找零钱问题169 17.22釆用哈夫曼编码的数据压缩170 17.23用贪心算法解决背包问题174 小结17 练习176 索引177 第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分析法不重要,而是因为本书采取了一种更为实用的方法来学 习数据结构与算法。 11群集( collection的定义 群集是一种结构化的数据类型。它冇储数据,并目提供数据的添加、删除、更新操作,以及对群集的不同属性 值的设置与返回操作 群集可以分为两类:线性的和非线性的。线性群集是一张元素列表,表中的儿素顺次相连。线性群集中的元素 通常山位置来决定次序(例如,第一个元素、第二个元素、第三个元素,依次类推)。在现实世界中,购物清单就 是很好的线性群集实例。而在计算机世界中(当然这也是真实世界)则把数组设计成线性群集。 非线性群集所包含的元素在群集内没有位置次序之分。组织结构图就像用架子垒好的台球一样是一个非线性群 集的实例。而在计算机世界中树、堆、图和集都是非线性群集。 尢论是线性的还是非线性的群集都拥有一套定义好的属性和架作的集合。其中,属性用来描述群集,而操作就 是群集能执行的内容。群集 Count就是群集属性的一个实例。它俣冇着群集中数据项的数量。这里把群集的操作称 为方法,它包括Add(即向群集添加新元素), Insert(即在群集指定的索引位置添加新元素)、 Remove(即从群集 中移除指定元素)、 Clear(即从群集中栘除所有元素) Contains(即确定指定元素是否是群集的成员)、以及 Indexof 即确定指定元素在群集中的索引位置)。 12群集 (collection的描述 在两种主要的群集类中有几个子类别。线性的群集可能是直接存取群集,也可能是顺序存取群集。而非线性的 群集既可以是层次群集,也可以是组群集。本小节就来讨论这些群集的关型。 121直接存取群集( collection) 直接有取群集最常见的实例就是数组。这里把数组定义为具有相同效据类型的元素的群集,而且所有数缃元素 如同图1-1说明的那样可以通过整数型索引直接进行存取访问。 Item o Item 1 Item 2 Item 3 Item j Item n-1 图11数组 数组可以是静态的,这样当声明数组的时候便于针对程序的长度来固定指定元素的数量。数组也可以是动态的, 通过ReDm或者 ReDim preserve语句就可以增加数组元素的数量。 在C#语言中,数组不只是内置的数据类型,它还是一种类。在木章的后续部分,当详细分析数组使用的时候将 会讨论如何把数组作为类对象来使用。 我们可以用数组来存储一个线性的群集。向数组添加新元素是很容易的,只要简单地把新元素放置在数组尾部 第一个空位上就可以了。但是,在数组中插入一个儿素就不是这么容易的(或高效)了。因为要给插入的元素空出 位置,所以需要按顺序向后移动数组元素。从数组的尾部删除一个元素也是很有效率的操作,只要简单地移除掉最 后一个元素的值就可以了。但是,删除薮组中任何其他位置上的元素就没有这么有效率了,就像处理插入操作一样, 为了保持数组中元素的连续性,可能需要先前调整许多数组元素的位置。这些情况将在本章后续内容中进行讨 论。NET框架为简化线性群集的编程提供了一种专门的数组类Araγistε第3章将会对此类进行分析硏究。

...展开详情
试读 127P 数据结构与算法C#语言描述(中文)
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
Z476867589 还没看完,内容很有帮助
2018-05-29
回复
benben_200507 还行,听清晰的
2017-09-05
回复
tryc 非常非常好的一本入门书
2017-02-10
回复
qq_26781635 非常非常好的一本书
2016-01-18
回复
zhuangyoong 清晰的pdf。数据结构和算法对于编程是很重要的基础。
2015-10-24
回复
union-union 还可以,比较基础
2015-01-22
回复
dofreely 不错,结合C#讲解数据结构,很实用
2014-11-19
回复
alss1923 一本不错的入门书,谢谢分享
2014-11-02
回复
almims 刚刚下载,感觉不错
2014-09-28
回复
dxmx1985 非常好,值得一读,感谢楼主分享
2014-07-17
回复
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
  • 分享精英

关注 私信
上传资源赚钱or赚积分
最新推荐
数据结构与算法C#语言描述(中文) 1积分/C币 立即下载
1/127
数据结构与算法C#语言描述(中文)第1页
数据结构与算法C#语言描述(中文)第2页
数据结构与算法C#语言描述(中文)第3页
数据结构与算法C#语言描述(中文)第4页
数据结构与算法C#语言描述(中文)第5页
数据结构与算法C#语言描述(中文)第6页
数据结构与算法C#语言描述(中文)第7页
数据结构与算法C#语言描述(中文)第8页
数据结构与算法C#语言描述(中文)第9页
数据结构与算法C#语言描述(中文)第10页
数据结构与算法C#语言描述(中文)第11页
数据结构与算法C#语言描述(中文)第12页
数据结构与算法C#语言描述(中文)第13页
数据结构与算法C#语言描述(中文)第14页
数据结构与算法C#语言描述(中文)第15页
数据结构与算法C#语言描述(中文)第16页
数据结构与算法C#语言描述(中文)第17页
数据结构与算法C#语言描述(中文)第18页
数据结构与算法C#语言描述(中文)第19页
数据结构与算法C#语言描述(中文)第20页

试读结束, 可继续阅读

1积分/C币 立即下载 >