- 定价:¥35.00
- 校园优惠价:¥35.00 (100折) (马上了解)
- 评分:
(已有148条评价)
- 促销活动:
- 我要买:
基本信息
- 原书名:Data Structures and Algorithm Analysis in C:Second Edition
- 原出版社: Addison Wesley/Pearson
- 作者: (美)Mark Allen Weiss
- 译者: 冯舜玺
- 丛书名: 计算机科学丛书
- 出版社:机械工业出版社
- ISBN:9787111127482
- 上架时间:2003-11-21
- 出版日期:2004 年1月
- 开本:16开
- 页码:391
- 版次:2-1
- 所属分类:计算机 > 计算机科学理论与基础知识 > 数据结构
教材 > 计算机教材 > 本科/研究生 > 公共课及公共选修课
机械工业出版社分类专区 > 机工电工电子分社 > 相关图书

【插图】

编辑推荐
被评为20世纪顶尖的30部计算机著作之一
国外数据结构与算法分析方面的标准教材
内容简介
计算机书籍
本书是《Data Structures and Algorithm Analysis in C》一书第2版的简体中译本。原书曾被评为20世纪顶尖的30部计算机著作之一,作者Mark
Allen Weiss在数据结构和算法分析方面卓有建树,他的数据结构和算法分析的著作尤其畅销,并受到广泛好评.已被世界500余所大学用作教材。
在本书中,作者更加精炼并强化了他对算法和数据结构方面创新的处理方法。通过C程序的实现,着重阐述了抽象数据类型的概念,并对算法的效率、性能和运行时间进行了分析。
全书特点如下:
●专用一章来讨论算法设计技巧,包括贪婪算法、分治算法、动态规划、随机化算法以及回溯算法
●介绍了当前流行的论题和新的数据结构,如斐波那契堆、斜堆、二项队列、跳跃表和伸展树
●安排一章专门讨论摊还分析,考查书中介绍的一些高级数据结构
●新开辟一章讨论高级数据结构以及它们的实现,其中包括红黑树、自顶向下伸展树。treap树、k-d树、配对堆以及其他相关内容
●合并了堆排序平均情况分析的一些新结果
本书是国外数据结构与算法分析方面的标准教材,介绍了数据结构(大量数据的组织方法)以及算法分析(算法运行时间的估算)。本书的编写目标是同时讲授好的程序设计和算法分析技巧,使读者可以开发出具有最高效率的程序。
本书可作为高级数据结构课程或研究生一年级算法分析课程的教材,使用本书需具有一些中级程序设计知识,还需要离散数学的一些背景知识。
作译者
目录
1.1 本书讨论的内容
1.2 数学知识复习
1.2.1 指数
1.2.2 对数
1.2.3 级数
1.2.4 模运算
1. 2.5 证明方法
1.3 递归简论
总结
练习
参考文献
第2章 算法分析
2.1 数学基础
2.2 模型
2.3 要分析的问题
2.4 运行时间计算
2.4.1 一个简单的例子
2.4.2 一般法则
2.4.3 最大子序列和问题的解
译者序
本书的目的是培养学生良好的程序设计技巧和熟练的算法分析能力,使得他们能够开发出高效率的程序。从服务于实践又锻炼学生实际能力出发,书中提供了大部分算法的C程序和伪码例程,但并不是全部。一些程序可从互联网上获得。
承蒙卢开澄教授、陈贤舜先生、温丽芳女士的鼓励,译者有幸将国外几部优秀原著介绍给我国的读者;蒋讳先生认真的工作使本书译文免除不少疏漏和错误;杨海玲女士的监督使翻译工作比预想的顺利。译者在此表示衷心的感谢。译者还愿意借此机会感谢挚友孙华先生,他对本书的翻译工作自始至终给予热心的关怀和无私的帮助。
由于时间及水平所限,书中译文不当之处,统祈学术界同仁及广大读者赐正。
译 者
2003年9月
前言
就不会有算法和数据结构的提出。在某些情况下,对于影响算法实现的运行时间的一些微小细节都需要认真地探究。
一旦解法被确定,程序还是必须要编写的。随着计算机的日益强大,它们必须解决的问题就变得更加巨大和复杂,这就要求开发更加复杂的程序。本书的目的是同时教授学生良好的程序设计技巧和算法分析能力,使得他们能够开发这样的具有最高效率的程序。
本书适合作为高级数据结构(CS7)课程或是研究生第一年算法分析课程的教材。学生应该具有中等程度的程序设计知识,包括像指针和递归这样一些内容,还要具有离散数学的某些知识。
方法
我相信,对于学生重要的是学习如何自己动手编写程序,而不是从书上拷贝程序。但另一方面,讨论现实程序设计问题而不套用样本程序实际上是不可能的。由于这个原因,本书通常提供实现方法的大约一半到四分之三的内容并鼓励学生补足其余的部分。第12章是这一版新加的一章,讨论主要侧重于实现细节的一些附加的数据结构。
本书中的算法均以ANSI C表示,尽管有些欠缺,但它仍然是最流行的系统程序设计语言。C代替Pascal的使用使得动态分配数组成为可能(可见第5章中的“再散列”)。它还在几处地方将代码简化,这通常是因为与(&&)操作走捷径的缘故。
对C的大多数批评集中在用它写出的程序代码可读性差的事实上。仅仅少击几次键,却牺牲了程序清晰性,而程序的速度又没有增加。因此,诸如同时赋值以及通过if(x=y)测试是否为0等技巧一般不在本书中使用。相信本书将证明只要细心练习是可以避免那些难以读懂的代码的。
内容提要
第1章包含离散数学和递归的一些复习材料。我相信对递归做到泰然处之的惟一办法是反复不断地看一些好的用法。因此,除第5章外,递归遍及本书每一章的例子之中。
第2章处理算法分析。这一章阐述渐进分析和它的主要弱点。这里提供了许多例子,包括对对数运行时间的深入解释。通过直观地把一些简单递归程序转变成迭代程序而对它们进行分析。介绍了更为复杂的分治程序,不过有些分析(求解递归关系)要推迟到第7章再详细讨论。
第3章包括表、栈和队列。重点放在使用ADT对这些数据结构编程,这些数据结构的快速实现,以及介绍它们的某些用途上。课文中几乎没有什么程序(只有些例程),而程序设计作业的许多思想基本上体现在练习之中。
第4章讨论树,重点在查找树,包括外部查找树(B-树)。UNIX文件系统和表达式树是作为例子来介绍的。AVL树和伸展树只作了介绍而没有分析。程序写出75%,其余部分留给学生完成。查找树的实现细节见第12章。树的另外一些内容,如文件压缩和博弈树,延迟到第10章讨论。外部媒体上的数据结构作为几章中的最后论题来讨论。
第5章是相对较短的一章,主要讨论散列表。这里进行了某些分析,本章末尾讨论了可扩散列。
第6章是关于优先队列的。二叉堆也在这里讲授,还有些附加的材料论述优先队列某些理论上有趣的实现方法。斐波那契堆在第11章讨论,配对堆在第12章讨论。
第7章讨论排序。它特别关注编程细节和分析。讨论并比较所有通用的排序算法。对以下四种算法详细地进行了分析:插入排序、希尔排序、堆排序以及快速排序。堆排序平均情形运行时间的分析对于这一版来说是新的内容。本章末尾讨论了外部排序。
第8章讨论不相交集算法并证明其运行时间。这是短且特殊的一章,如果不讨论Kruskal算法则该章可跳过。
第9章讲授图论算法。图论算法的重要性不仅因为它们在实践中经常用到,而且还因为它们的运行时间强烈地依赖于数据结构的恰当使用。实际上,所有标准算法都是和相应的数据结构、伪代码以及运行时间的分析一起介绍的。为把这些问题放进一本适当的教材中,我们对复杂性理论(包括NP-完全性和不可判定性)进行了简短的讨论。
第10章通过考查一般的问题求解技巧讨论算法设计。这一章添加了大量的实例。这里及后面各章使用的伪代码使得学生更好地理解例子,而避免被实现的细节所困扰。
第11章处理摊还分析。对来自第4章到第6章的三种数据结构以及本章介绍的斐波那契堆进行了分析。