程序算法与技巧精选
作者:郭继展 郭勇 苏辉
ISBN:978-7-111-23816-4
出版社:机械工业出版社
出版日期:2008-5
页码:323 页
定价:36.00元
内容提要计算机科学是算法的科学。进行程序设计不仅需要掌握常用的算法、技术和方法,还要敢于创新、构思巧妙的算法和探索编程中的诸多技巧。
算法和技巧都需要学习、借鉴和交流。本书分17章,139个例题。书中介绍的算法和技巧涉及到随机数函数理论,基础数论,新意幻方,提高程序运行速度和精度,特定数据排序,穷举、递推、递归和迭代等诸多方面。这些算法和技巧大多是作者历年从事教学、软件开发、学术研究和学习的成果总结。
本书内容不涉及计算机专业课程的诸多概念、理论,读者之需要学过c语言,有算法、结构化程序设计和逻辑表达式的概念,并有独立上机编制30条左右语句小程序的经验,就能够掌握书中的程序设计思想、算法和技巧,并能举一反三,推广应用,是自己的编程水平上一个台阶。
本书可作为大专院校师生和计算机编程人员或自学人员参考。
编辑推荐巧算π值10000位
哥德巴赫猜想的筛法验证
统计法排序——百万整整只需1秒
计算机辅助数学证明——3个数学黑洞
辅助解智力测验题——12只球中挑坏球
应用程序增加智能——显示解题过程和精确解
内容选读第1章算法——程序的灵魂
1.1计算机科学是算法的科学
1.什么是算法
算法是对特定问题求解步骤的一种描述,包含操作的有限规则和操作的有限序列。
通俗一点讲,算法就是一个解决问题的公式(数学手册上的公式都是经典算法)、规则、思路、方法和步骤。算法可以用自然语言描述,也可以用流程图描述,但最终要用计算机语言编程,上机实现。
有些问题算法是简单的,手算人人都会,但编程上机实现却很难(本书将对这一问题做较多的讨论)。例如求100位数的四则运算,求线性方程组的精确解等。一个成功的算法,应该有良好的速度、精度和清晰度。
人没有算法,计算机也无能为力。算法错了,计算机将误入歧途。20世纪初的数学家希尔伯特提出了23个问题。一个世纪过去了,有的问题还没有解决,就是因为数学大师们仍找不到一个合适的算法。从这一点讲,计算机的理论基础是数学。
2.好的算法具备的属性
(1)确定性。算法应当满足具体问题的需求,正确反映问题对输入、输出和加工处理等方面的要求。第一条指令必须有确定的含义和作用,对于相同的输入必须得出相同的执行结果。
(2)有限性。算法中每条指令的执行次数是有限的,执行时间也是有限的。算法执行有限步后必然结束,不能要求无休止地执行下去。如近似计算,当达到要求的精度或要求的计算数时,即可停止。
……
目录出版说明
前言
第1章算法——程序的灵魂
1.1计算机科学是算法的科学
1.2算法是有多样性
1.3奇妙算法是智慧的结晶
1.4穷举法——编程的瑰宝
第2章随机数函数——计算机模拟的基石
2.1高质量的均匀分布的随机函数
2.2八种常用的随机数函数
第3章数组——设计算法的重要手段
3.1百灯判熄——数组元素变号代替开关
3.2打印杨辉三角形——数组元素相加胜过组合
3.3新战士的年龄——数组嵌套妙比数字
3.4巧排螺旋数阵——数组下标灵活表旋向
3.5小孩子围圈分糖块——数组下标灵活表旋向
3.6猜数四问——一维数组列方阵
第4章整数问题——问题简明算法有难易
4.1徒工工资数——数有特点算法有创新
4.2古稀数——循序渐进连环验证
4.3巧算国王分财物——由部分推知全体
4.4六位的翻两番数——多个未知数巧合作一个
4.6孙子问题——真谛原本在“求一”
4.7完全数——全赖欧氏定理领航
4.7亲和数——因子试算只到平方根
4.8自守数——两位连推到十位
第5章平方数问题——算法多从数的平方入手
5.1一数三平方数——数组元素预算平方
5.2卡普列加数——推导公式简化编程
5.3勾股数组——觅公式算法直接得解
5.4巧妙验证四个平方数和的定理——一用筛法(数组作筛)
5.5十数字组四个平方数——巧用回退
5.6金蝉平方数——“脱壳”组数
5.7连解佩尔方程——测试细节不容忽视
第6章素数问题——让古老算法结新果
6.1筛一亿内的素数——二用筛法
6.2哥德巴赫猜想验证——三用筛法
6.3求费尔马“二平方”素数——“滚雪球”式地得到所使用的素数
6.4回文式素数——依然含有诸多猜想
6.5双向环形素数——循环移位组数判断
6.6趣谈莫林素数——突显计算机、网络的魅力
第7章用算法提高程序的运行速度
7.1求百万内回文式素数——优化求解顺序提高速度300倍
7.2百鸡问题——减少循环重数提高速度5000倍
7.3求自幂数——用数组预作乘法提高速度100倍
7.4组合平方数——条件化为位运算表示提高速度100000倍
……
第8章用算法提高程序的运算精度
第9章特定数据排序——设计特效算法
第10章取用计算机的几种编码
第11章递推、递归和迭代——三种基本算法
第12章逻辑推理——设计符合计算机的简捷算法
第13章使应用程序增加智能——显示解题过程和精确解
第14章幻方新意新解——提出问题力求解决问题
第15章计算机辅助解智力测验题
第16章计算机辅助数学证明
第17章必须警惕计算机犯错误