C/C++
4Sf>B^BT2db5Sfln
用用昇灌于而
The Classic Algorithm Fundamental of
Program Language C/C+ +
计算机技术的发展和普及不仅改变了人们的生活和娱乐方式,也改变了人们的工作方式,
这其中最为重要的便是计算机编程技术。现代的设计任务大多通过代码编程交给计算机来完
成,其中算法起到了至关重要的作用。可以亳不夸张地说,算法是一切程序设计的灵魂和基础。
本书分3 篇,共 13章,“第 1篇算法基础篇”介绍了算法概述,重点分析了数据结构和基
本算法思想;“第 2 篇算法基本应用篇”详细讲解了算法在排序、查找、数值计算、数论、经典
趣题和游戏中的应用;“第 3 篇算法高级应用篇”讲解了算法的一些高级应用技术,包括在密码
学和数据压缩/解压缩中的应用。
本书知识点覆盖全面、结构安排紧凑、讲解详细、示例丰富。全书对每一个知识点都给出了
相应的算法及应用示例。虽然这些例子都是以0:语言来编写的,但是算法并不局限于(:语言。如
果读者采用其他编程语言,例如0 + 、C#、V B 、仏〃3 等,根据其语法格式进行适当的修改即可。
本书主要定位于有一定0 7 0 + 语言编程基础、想通过学习算法与数据结构提升编程水平的读
者,也可作为具有一定编程经验的程序员以及大中专院校学生学习数据结构和算法的参考书。
图书在版编目(Cl P ) 数据
0/0++常用算法手册/ 秦姣华,向旭宇编著. 一北京:中国
铁道出版社,2011.5
ISBN 978-7-113-12570-7
I. ©(>•• I I . ①秦… ②向… III. © 0 语言一程序设计一
手册 W. ©TP312-62
中国版本图书馆0 1 ?数据核字(2 01 1 )第 020793号
书 名:0/0++常 用 算 法 手 册
作 者:秦姣华向旭宇编著
策划编辑:
荆 波 读者服务热线:400-668-0820
责任编辑:
荆 波
特邀编辑:王 惠
编辑助理:王 宏
封面设计:
付 巍
封面制作:郑少云 .
责任印制:
李 佳
出版发行:中国铁道出 版 社(北京市宣武区右安门西街8 号 邮政编码:100054)
印 刷:北京铭成印刷有限公司
版
次
:
2011
年
5
月
第
1
版
2011
年
5
月
第
1
次印刷
开 本:787mmX 1092nun 1/16 印张:26.25 字数:617千
印 数:3 500册
书 号:ISBN 978-7-113-12570-7
定 价: 49. 00元
版权所有侵权必究
凡购买铁道版阁朽,如有印制质簠问题,请与本社发行部联系调换。
Foreword
计算机程序设计是信息化进程中最为重要的设计手段。一个应用程序往往由编程语
言、数据结构和算法组成。其中,算法是整个程序设计的核心。算法代表求解具体问题的
手段和方法,可以毫不夸张地说,算法是一切程序设计的灵魂和基础。选择合理的算法,
可以起到事半功倍的效果。因此,对于程序员来说,学习和掌握算法成为重中之重。
但是,数据结构和算法理论性很强,读者在学习的过程中会感到枯燥和吃力,往往
学习一段时间后便丧失了兴趣,这就使得学习的效率大大降低。如何才能提高读者学习
的兴趣,使读者能快速掌握数据结构和算法的知识呢?其实读者需要的不仅是理论知
识,还需要了解这些知识点的代码实现以及应用示例。另外,对知识背景的介绍和理解
往往能激发读者学习的兴趣。编者便从这些基本点出发,为读者编写了一本可以轻松学
习数据结构和算法的参考书。
匸语言加上它的衍生语言c—是目前最为流行的编程语言。本书中所有的算法及示
例都是采用匚语言进行编写的,当然因为基本语法一样,所以同时也能在&+环境下运
行。但是,这些算法并不局限于0 语言。如果读者釆用其他编程语言,例 如 C#、VB、
“ ▽&等,根据其语法格式进行适当的修改便可使用。毕竟算法是核心,0 和&+语言也
是众多其他语言发展时的重要参考,很多语法特点也相同。
本书特色
为了保证读者掌握算法这个程序设计的核心技术,我们一开始就为本书规划了一些
特色,以保证其质量和延长其生命力。与其他书籍相比,本书有如下特色:
( 1 ) 本书由浅入深、循序渐进地带领读者学习数据结构和算法的知识。
( 2 ) 本书不仅详细介绍了算法的基础知识和应用,还对常用的加密/解密和数据压
缩等髙级算法编程技术进行了详细的讲解。
(3 )
本书在讲解每个知识点的同时,均给出了相应的算法原理和算法实现,同时还
给出了完整的应用示例,每个示例都可以通过编译
执
行,使读者可以快速掌握相应的知
识点在程序设计中的应用。
(4 )本书在介绍各个知识点的同时,尽量结合历史背景并给出问题的完整分析,使
读者可以了解问题的来龙去脉,避免了代码类书籍的枯燥乏味,增加了图书的易读性。
(5)
本书对每一个示例的程序代码都进行了详细的注释和分析,并给出了运行结果,
使读者在学习时更加容易理解。
本书的内容
本书以实用性、系统性、完整性和前沿性为特点,详细介绍了算法的基本思想和不
同领域的应用示例。本书内容共分3篇 13章。
第 1篇是算法基础篇,共分为3 章,详细介绍了算法和数据结构的相关知识。
第 1章为算法概述,介绍了什么是算法,以及算法的发展、分类、基本概念、表示
以及性能评价等。同时,还通过一个示例分析算法的编写和编译执行等。最后,本章还
介绍了一些算法的最新进展,扩展读者的知识面。
第 2 章为数据结构,首先介绍了数据结构基本概念,然后重点介绍了顺序表结构、
链表结构、栈结构、队列结构、树结构和图结构的实现。
第 3 章为基本算法思想,介绍了穷举算法思想、递推算法思想、递归算法思想、分
治算法思想和概率算法思想的原理和应用。
第 2篇为算法基本应用篇,共分为8 章,详细讲解了算法在排序、查找、数值计算、
数论、经典趣题和游戏中的应用。
第 4 章为排序算法,详细介绍冒泡、选择、插入、S h d l、快速、堆排等各种排序算
法及其应用示例。
第 5 章为查找算法,详细讲解了顺序、折半等各种查找算法及其应用示例。
第 6 章为基本数学问题,介绍了多项式计算、随机数生成、复数运算、阶乘、计算
圆周率、矩阵运算和方程求解中的算法,并通过完整的示例来演示算法的应用。
第 7 章为复杂的数值计算算法,介绍了在科学和工程计算中常用的插值、数值积分、
开平方、求极值以及一些特殊函数的数值计算算法。
第 8 章为经典数据结构问题,介绍与数据结构相关的一些典型问题,包括动态数组
排序、约瑟夫环、最短总距离、最短路径和括号匹配等内容。
第 9 章为数论问题,首先介绍了数论的基本知识,然后介绍了初等数论中一些基本
数据的计算算法。
第 1 0 章为算法经典趣题,介绍了一些历史上非常有名的算法问题和智力趣题等。
这些经典趣题是历史累积的算法财富,通过这些有趣的问题,可以提升读者的编程能力
和激发学习算法的兴趣。
第 1 1 章为游戏中的算法,讲解了一些经典游戏中的算法,包括洗扑克牌算法、取
火柴游戏算法、1 0 点半算法以及生命游戏算法。
第 3 篇为算法高级应用篇,共分为2 章,详细讲解了算法在密码学和数据压缩/解
压缩中的应用。
2
第 1 2 章为密码学算法,首先介绍了密码学的基本知识,然后详细介绍了换位加密
算法、替换加密算法、位加密算法和一次一密加密算法。
第 1 3 章为压缩与解压缩算法,首先介绍了数据压缩的基本知识,然后重点介绍了
乙乙… 压缩算法和解压缩算法的实现,最后结合示例讲解了压缩/解压缩算法的应用。
适合的读者
•系统开发人员
•程序设计初学者
•匸程序员
•电脑培训班学员
•计算机爱好者
• 大学、大专等相关专业的学生及教师
本书结构紧凑,涉及的知识点也较全面,内容翔实,示例丰富。由于本书内容较
多,编写时间仓促,书中如有疏漏或不足之处,恳请广大读者提出宝贵意见,以便进
一步改进。
增值服务
一本真正的好书,从策划到出版上市会凝聚很多人行之有效的想法以及智慧,它不
但为读者打开一扇学习知识的门,更要为读者在书本之外搭建起一条提升能力的阶梯。
为了让本书更加完善,读者在学习本书的过程中如果发现有不明白的地方或者有更好的
算法和其他建议,我们真诚地欢迎您发邮件到1057762679@ qq.com和我们交流,相互
学习和一起提升。另外,阅读完本书后,读者如果有增加学习深度和了解其他算法相关
技术的想法,也可到本书专有的读者服务网站匕中:/、〜〜. ^ [ ^ 3 . 1 ^ / 【0叫1 ^ /5 5 上交流学
习心得、阅读相关技术,还可以阅读在实际工作中可能会用到的其他算法技术资料,该
资料内容至少有6 0 0 页。同时,我们还会在这个网站上提供辅助视频教学服务,供读者
下载或者在线学习。