分享
 
 
 

算法:C语言实现(第1~4部分)基础知识、数据结构、排序及搜索

王朝百科·作者佚名  2010-09-12
窄屏简体版  字體: |||超大  

原书名: Algorithms in C, Parts 1-4: Fundamentals, Data Structures, Sorting, Searching (3rd Edition) (Pts. 1-4)原出版社: Addison-Wesley Professional

作者: (美)Robert Sedgewick

译者: 霍红卫[同译者作品

出版社:机械工业出版社

出版日期:2009 年10月

开本:16开页码:456版次:3-1

本书细腻讲解计算机算法的C语言实现。全书分为四部分,共16章。包括基本算法分析原理,基本数据结构、抽象数据结构、递归和树等数据结构知识,选择排序、插入排序、冒泡排序、希尔排序、快速排序方法、归并和归并排序方法、优先队列与堆排序方法、基数排序方法以及特殊用途的排序方法,并比较了各种排序方法的性能特征,在进一步讲解符号表、树等抽象数据类型的基础上,重点讨论散列方法、基数搜索以及外部搜索方法。书中提供了用C语言描述的完整算法源程序,并且配有丰富的插图和练习,还包含大量简洁的实现将理论和实践成功地相结合,这些实现均可用在真实应用上。.本书内容丰富,具有很强的实用价值,适合作为高等院校计算机及相关专业本科生算法课程的教材,也是广大研究人员的极佳参考读物。本书是Sedgewick彻底修订和重写的C算法系列的第一本。全书分为四部分,共16章。第一部分“基础知识”(第1~2章)介绍基本算法分析原理。第二部分“数据结构”(第3~5章)讲解算法分析中必须掌握的数据结构知识,主要包括基本数据结构、抽象数据结构、递归和树。第三部分“排序”(第6~11章)按章节顺序分别讨论基本排序方法(如选择排序、插入排序、冒泡排序、希尔排序等)、快速排序方法、归并和归并排序方法、优先队列与堆排序方法、基数排序方法以及特殊用途的排序方法,并比较了各种排序方法的性能特征。第四部分“搜索”(第12~16章) 在进一步讲解符号表、树等抽象数据类型的基础上,重点讨论散列方法、基数搜索以及外部搜索方法。..书中提供了用C语言描述的完整算法源程序,并且配有丰富的插图和练习。作者用简洁的实现将理论和实践成功地结合了起来,这些实现均可在真实应用上测试,使得本书自问世以来备受程序员的欢迎。本书可作为高等院校计算机相关专业算法与数据结构课程的教材和补充读物,也可供自学之用。

作者简介:

Robed Sedgewick拥有斯坦福大学博士学位(导师为Donald E. Knuth),昔林斯顿大学计算机科学系教授,Adobe Systems公司董事,曾是XeroxPARC的研究人员,还曾就职于美国国防部防御分析研究所以及INRIA。除本书外,他还与Philippe Flajolet合著了《算法分析导论》一书。...

目录:

出版者的话. 译者序 前言 第一部分 基础知识 第1章 引言 1 1.1算法 1 1.2典型问题—连通性 2 1.3合并-查找算法 5 1.4展望 12 1.5主题概述 13 第2章算法分析的原理 15 2.1实现和经验分析 15 2.2算法分析 17 2.3函数的增长 19 2.4大O符号 23 2.5基本递归方程 27 2.6算法分析示例 29 2.7保证、预测及局限性 33 第二部分 数据结构 第3章基本数据结构 37 .3.1构建组件 37 3.2数组 44 3.3链表 49 3.4链表的基本处理操作 54 3.5链表的内存分配 60 3.6字符串 63 3.7复合数据结构 66 第4章抽象数据类型 74 4.1抽象对象和对象集 76 4.2下推栈ADT 78 4.3栈ADT客户示例 79 4.4栈ADT的实现 84 4.5创建一个新ADT 87 4.6FIFO队列和广义队列 90 4.7复制和索引项 95 4.8一级ADT 99 4.9基于应用的ADT示例 106 4.10展望 110 第5章递归与树 111 5.1递归算法 111 5.2分治法 116 5.3动态规划 127 5.4树 133 5.5树的数学性质 138 5.6树的遍历 140 5.7递归二叉树算法 145 5.8图的遍历 149 5.9综述 155 第三部分 排序 第6章基本排序方法 157 6.1游戏规则 158 6.2选择排序 161 6.3插入排序 162 6.4冒泡排序 164 6.5基本排序方法的性能特征 166 6.6希尔排序 171 6.7对其他类型的数据进行排序 177 6.8索引和指针排序 180 6.9链表排序 185 6.10关键字索引统计 188 第7章快速排序 191 7.1基本算法 191 7.2快速排序算法的性能特征 195 7.3栈大小 198 7.4小的子文件 201 7.5三者取中划分.. 203 7.6重复关键字 206 7.7字符串和向量 209 7.8选择 210 第8章归并与归并排序 213 8.1两路归并 213 8.2抽象原位归并 215 8.3自顶向下的归并排序 216 8.4基本算法的改进 219 8.5自底向上的归并排序 220 8.6归并排序的性能特征 223 8.7归并排序的链表实现 225 8.8改进的递归过程 227 第9章优先队列和堆排序 229 9.1基本操作的实现 231 9.2堆数据结构 233 9.3基于堆的算法 235 9.4堆排序 240 9.5优先队列ADT 244 9.6索引数据项的优先队列 247 9.7二项队列 250 第10章基数排序 258 10.1位、字节和字 259 10.2二进制快速排序 261 10.3MSD基数排序 265 10.4三路基数快速排序 271 10.5LSD基数排序 274 10.6基数排序的性能特征 278 10.7亚线性时间排序 280 第11章特殊用途的排序方法 284 11.1Batcher奇偶归并排序 284 11.2排序网 289 11.3外部排序 295 11.4排序-归并的实现 299 11.5并行排序/归并 303 第四部分 搜索 第12章符号表和二叉搜索树 307 12.1符号表抽象数据类型 308 12.2关键字索引搜索 311 12.3顺序搜索 313 12.4二分搜索 318 12.5二叉搜索树 321 12.6BST的性能特征 327 12.7符号表的索引实现 329 12.8在BST的根节点插入 332 12.9其他ADT函数的BST实现 336 第13章平衡树 343 13.1随机化BST 345 13.2伸展BST 350 13.3自顶向下2-3-4树 355 13.4 红黑树 360 13.5跳跃表 368 13.6性能特征 374 第14章散列 377 14.1散列函数 377 14.2链地址法 385 14.3线性探测法 388 14.4双重散列表 392 14.5动态散列表 396 14.6综述 399 第15章基数搜索 402 15.1数字搜索树 402 15.2线索 406 15.3帕氏线索 413 15.4 多路线索和TST 419 15.5文本字符串索引算法 430 第16章外部搜索 434 16.1游戏规则 435 16.2索引顺序访问 436 16.3B树 438 16.4 可扩展散列 447 16.5综述... 455译者序本书是算法方面的优秀著作之一。它系统地阐述了算法的特征以及它们可能应用的场合,讨论了算法分析与理论计算机科学的关系,并通过实验数据和分析结果表明选择何种算法来解决实际问题。书中包含了基本概念、数据结构、排序算法和搜索算法。.

这本书不仅适合于程序员和计算机科学专业的学生,而且也适合于那些想利用计算机并想使它运行更快或是想要解决更大问题的人们。书中的算法代表了过去50年来所研究的知识主体。对于大量应用问题,这些知识主体已经成为有效使用计算机不可缺少的部分。从物理学中的N-体模拟问题到分子生物学中的序列分析问题,在此所描述的基本方法在科学研究中已日显重要。另外,从数据库系统到Internet搜索引擎,这些方法已经成为现代软件系统的重要组成部分。随着计算机应用的覆盖面越来越广,基本算法的影响也日益显著。

本书主要内容及特点如下:

扩展介绍了数组、链表、串、树和其他基本数据结构。

为排序、选择、优先队列ADT实现和符号表ADT(查找)实现提供了多达100多个算法。

介绍了多路基数排序、随机BST、伸展树、跳跃表、多路trie等新的数据结构。..

为算法提供了很多可视化的信息,还有大量实验研究和基本分析研究,从而为选择算法解决实际问题提供了依据。

增加了1000多个新练习,从而有助于深入了解算法的特征。

本书以大量图例说明算法的工作过程,使得算法更加易于理解和掌握。

适合作为高等院校算法设计课程的教材,同时可作为从事软件开发和工程设计的专业人员的参考书。

由于时间较紧及译者水平有限,译文难免有错误及不妥之处,恳请读者批评指正。...

译者

于西安电子科技大学计算机学院

2009年4月前言写本书的目的是为了对当今使用最为重要的计算机算法做一综述,并为需要学习这方面知识的越来越多的读者提供基础的技术。本书可以在学生掌握了所需的基本程序设计技巧,熟悉了计算机系统,但还未学过计算机科学或计算机应用高级领域的专业课程的时候,用作计算机科学的第二、第三或第四门课程的教科书。此外,由于本书包含了大量有用算法的实现,以及关于这些算法的性能特征的详细信息,因而它还可用于自学,或者作为从事计算机系统或应用程序开发人员的参考手册。宽广的视角使得本书成为计算机算法领域最合适的入门读物。.

对于新的一版,我不仅完全重写了它的内容,而且还添加了一千多个练习、一百多幅图表和数十个新程序。我还给所有图表和程序添加了详细的注释。新的素材不仅涵盖了新的主题,而且还包含对经典算法的更完整解释。抽象数据类型是这本书的重点,这使得程序应用更广泛,并且与现代面向对象的程序设计环境更紧密。读过本书旧版本的人一定会发现,新版本包含了更为丰富的新信息,所有读者将发现大量的教学资料为掌握基本概念提供了有效途径。

由于新的素材数量过多,所以我们把新版本分为两卷(每一卷的容量都大约为旧版本的大小),本书是第一卷。这卷书中包含了基本概念、数据结构、排序算法和搜索算法;第二卷涵盖的高级算法及应用是以第一卷的基本抽象概念和方法为基础的。这个新版中的关于基本原理和数据结构的所有素材几乎都是新的。

这本书不仅适合于程序员和计算机科学专业的学生,而且也适合于想利用计算机并想使它运行更快或是想要解决更大问题的人们。这本书中的算法代表了过去50年来所研究的知识主体。对于大量应用问题,这些知识主体已经成为有效使用计算机的不可缺少的部分。从物理学中的N-体模拟问题到分子生物学中的序列分析问题,在此所描述的基本方法在科学研究中已日显重要。另外,对于从数据库系统到Internet搜索引擎,这些方法已经成为现代软件系统的重要组成部分。随着计算机应用的覆盖面越来越广,基本算法的影响也日益显著。本书的目标是要提供一种资源,使广大学生以及专业人士可以了解并有效利用这些算法解决计算机应用中出现的问题。

本书范围

本书共有16章,分为四大部分:基础、数据结构、排序和搜索。这里的说明是想使读者对尽可能多的基本算法有一个了解。本书描述的从二项队列到帕氏线索这个范围内的独创性的方法,都与计算机科学核心的基本范型相关。第二卷由另外四部分组成,涵盖了字符串算法、几何算法、图算法和高级主题。写这些书的主要意图是把各个领域中应用的基本方法集合在一起,从而为用计算机求解问题提供最好的方法。

如果你已经学过计算机科学的一两门课程,如C、Java或C++这样的高级程序设计语言课程,或者可能还有讲授程序设计系统的基本概念的课程,或者具有同等的程序设计经验,那么一定会非常欣赏本书提供的资料。因此,本书是为那些熟悉现代程序设计语言和现代计算机系统的基本特性的人而编写的。书中给出的参考文献会有助于弥补背景知识的不足。

由于用来支持分析结果的大部分数学知识都包含在本书中(或者做出标记不在本书之中),因而尽管具有完备的数学知识肯定会有帮助,但专门对数学知识的准备不是必要的。

教学中的用法

在教学中如何使用本书内容具有很大的灵活性,这取决于教师的偏好以及学生所做的准备。这里所描述的算法多年以来已经得到广泛应用,而且无论对于实际的程序员还是计算机科学专业的学生,这些算法都代表了基本的知识主体。书中涵盖了足够的基本内容可用作数据结构课程的学习,也有足够详细的高级主题用于算法课程的学习。有些教师可能希望强调与实现和实践有关的内容,而另外一些教师则可能把重点放在分析和理论概念上。

教学中使用的电子文档、程序设计示例作业、为学生提供的交互式练习以及其他课程有关的资料都可在本书的主页上找到。

关于数据结构和算法的基础课程可以把重点放在第二部分的基本数据结构及其他们在第三、四部分实现中的应用。关于算法设计与分析的课程可以把重点放在第一部分和第五部分中的基础内容,然后在第三部分和第四部分研究算法达到良好渐近性能的方法。关于软件工程的课程可能会省略数学和高级算法的内容,并把重点放在如何把给出的算法实现集成到大的程序或系统中。关于算法的课程则可能进行综述并引入所有这些领域的概念。

本书的早期版本在近年来为世界各地的学院或大学用作计算机科学的第二或第三门课程的教材或其他课程的补充阅读材料。在普林斯顿大学,我们的经验表明这本书内容覆盖面广,为主修课程提供计算机科学的导引,并可在后续的算法分析、系统程序设计以及理论计算机科学的课程中对它进行扩充,同时为其他学科的学生提供一整套的技术,使他们能很快学以致用。

这一版中的大多数练习是新添加的,分为几种类型。一类练习的目的是为了测试对课文中内容的理解,要求读者能够完成某个例子或应用课文中描述的概念。另一类练习则涉及实现算法和把算法整理到一起,或者进行实验研究从而对各种算法进行比较以及了解其性质。还有一类练习则是一些重要信息的知识库,其详细程度本身不适合放在正文中。阅读并思考这些练习,会使每个读者受益匪浅。

算法的实用性

若希望更有效地使用计算机,可以把这本书用作参考书,或用于自学。具有程序设计经验的人可以从本书中找到有关某个特殊主题的信息。对于更大范围的读者,尽管某些情况下,某一章中的算法使用了前一章中的方法,但你仍可以独立于本书的其他章节阅读本书的某个章节。

本书的定位是研究有可能实用的算法。本书提供了算法的详尽信息,读者可以放心地实现和调试算法,并使算法能够用于求解某个问题,或者为某个应用提供相关功能。书中包括了所讨论方法的完整实现,并在一系列一致的示例程序中给出了这些操作的描述。由于我们使用了实际代码,而不是伪代码,因而在实际中可以很快地使用这些程序。通过访问本书的主页可以得到程序的代码清单。

实际上,书中算法的实际应用会产生数百幅图表。正是这些图表提供的立体视觉直观地发现了许多算法。..

本书详细讨论了算法的特征以及它们可能应用的场合。尽管并不强调,但是书中论述了算法分析与理论计算机科学的联系。在适当的时候,书中都给出了经验性的数据和分析结果用以说明为什么选择使用某些算法。如果有趣,书中还会描述所讨论的实际算法与纯理论结果之间的关系。关于算法性能特征和实现的某种信息的综合、概括和讨论都会贯穿本书的始终。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有