计算机常用算法与程序设计教程(第2版)电子书

杨克昌
简介: 讲述枚举、递推、递归、回溯法、动态规划、贪心算法、分支限界法与模拟等常用算法及其应用。

*文中代码字体版权说明

内容提要

本书遵循“精选案例,深入浅出,面向设计,注重能力培养”的要求,系统讲述枚举、递推、递归、回溯法、动态规划、贪心算法、分支限界法与模拟等常用算法及其应用。精选各算法设计求解的典型案例,从案例提出到算法设计、从程序实现到复杂度分析,环环相扣,融为一体,力求算法理论与实践应用相结合、算法与程序相统一,突出算法在程序设计中的核心地位与引导作用。

书中所有案例给出算法设计要点与完整的C程序代码,并给出程序运行示例(均在Visual C++ 6.0编译通过)与算法分析。为方便教学,每章都附有习题,同时推出与本书配套的课件供教学选用。书中所有源代码、部分习题解答提示与配套课件均可从人邮教育社区(http://www.ryjiaoyu.com)下载。

本书可作为高等院校计算机相关专业“算法设计与分析”和“程序设计基础与应用”等课程的教材,也可供软件设计人员和程序设计爱好者学习参考。

第2版前言

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

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

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

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

本书体现以下4个特色。

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

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

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

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

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

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

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

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

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

版权:人民邮电出版社