计算机常用算法与程序设计教程(第2版)
上QQ阅读APP看书,第一时间看更新

第2版前言

“计算机算法与程序设计”是计算机科学与技术的核心,是高等院校计算机相关专业的一门重要的专业基础课,课程教学目的是提高学生的算法设计水平,培养通过程序设计解决实际问题的能力。

现有诸多“算法设计与分析”教材通常在算法选取上贪多求全、贪广求深,在内容组织上普遍存在两个问题:算法与数据结构结合多,算法与程序设计脱节;罗列算法多,算法理论与实际应用脱节。由此直接造成学生对算法不感兴趣,不利于学生应用算法与程序设计解决实际问题能力的培养与提高。

为此,我们在编著《计算机常用算法与程序设计教程》(普通高等教育“十一五”国家级规划教材)的基础上进行全面调整与充实,对应用案例进行进一步提炼与优化。

本书遵循“精选案例,深入浅出,面向设计,注重能力培养”的宗旨,在常用算法应用案例的选取与深度的把握上,在算法理论与实际应用的结合上进行精心设计,力图适合高校计算机课程教学目标与知识结构要求。

本书体现以下4个特色。

(1)注重常用算法的选取与组织

在算法的选取上去除一些难度大、应用少的带学术研究性质的算法内容,结合高校计算机教学实际与应用需求,选取枚举、递推、递归、回溯法、动态规划、贪心算法、分支限界法与模拟等常用算法。

对精选的各种常用算法,在介绍算法基本理论与设计规范后,从实际案例的解决入手,讲述算法中要求学生掌握的设计要点与实施步骤,避免出现本、专科阶段与研究生阶段的教学内容混杂不分,避免面面俱到、空洞而不着边际的局面。

特别推介第9章的“竖式乘除模拟”,它是近年总结推广用于数论高精计算的创新成果,既可以处理整数高精度计算,也可实现一些无理数的指定精度计算。

(2)注重典型案例的精选与提炼

精选适合各常用算法的典型案例,包括经典的数值求解与常见的数据处理。这些案例中既有引导入门的基础问题,也有难度较大的综合案例;既有构思巧妙的新创趣题,也有历史悠久的经典名题,难度适宜,深入浅出。

培养学生的学习兴趣,激发学生的学习热情,不是一两句空洞说教所能奏效的,必须通过一系列有吸引力的实际案例来引导。应用案例的精选与提炼,有利于激发学生学习算法与程序设计的兴趣,有利于学生在计算机实际应用上开阔视野,使之在算法思路的开拓与设计技能的运用上有一个深层次的锻炼与提高。通过实际案例来引导算法设计的逐步深入,实现以典型案例支撑算法,以算法设计指导案例求解的良性循环。

(3)注重算法与程序的有机融合

算法与程序是一个有机的统一体,不应该也不可能将它们对立与分割。本书在材料的组织上克服了罗列算法多、应用算法设计解决实际问题少,算法与程序设计脱节、算法理论与实际应用脱节的问题。在讲述每一种常用算法的基本思路与设计规范基础上,落实到每一个案例求解,从问题背景到算法设计、从程序实现到运行示例、从复杂度分析到变通改进,环环相扣,融为一体。学生看得见、摸得着、学得会、用得上,力求算法理论与实际应用相结合、算法与程序设计相统一,突出算法在解决实际案例中的核心地位与引导作用。

本书采用功能丰富、应用面广、高校学生使用率最高的C语言描述算法与编写程序。为使读者使用方便,程序均可在Visual C++6.0编译通过。

(4)注重算法与程序的改进优化

本书对一些典型案例应用多种不同的算法设计,编写表现形式与设计风格不同的程序,体现了算法与程序设计的灵活性和多样性。

问题求解的算法与程序设计都不是一成不变的,可以根据问题的具体实际进行多方位多层次的变通。变通出成果,变通长能力。把对案例实施算法改进与程序优化的过程,体现为降低复杂度、提高求解效率的过程,转化为算法设计能力培养与提高的过程,提升为优化意识与创新能力增强的过程。

为方便读者程序设计练习与查阅,附录简介了在Visual C++6.0环境下运行C程序的方法,并列出C语言的常用库函数。同时,与本书配套的课件、书中的源代码与部分习题解答提示均可在人邮教育社区(http://www.ryjiaoyu.com)下载。

本书适合各高校计算机相关专业“算法设计与分析”与“程序设计基础与应用”等课程教学。参考学时为60~72学时,建议采用理论教学与上机实践相结合的教学模式,第1~9章分别为6~8学时(含上机实践,具体由任课教师根据教学实际确定),第10章作为自学提高及课程设计的参考素材。

本书由杨克昌教授主编,王岳斌教授、严权峰教授、周小强副教授与甘靖、陶跃进老师参加教材编写与试用。其中,王岳斌编写第6章,严权峰编写第7章,周小强编写第3章,甘靖编写第4章,陶跃进编写第5章,杨克昌编写其余各章并负责统稿。本书的编写得到湖南理工学院教务处和计算机学院的大力支持,编者在此表示衷心感谢。

编者

2017年2月于岳阳南湖