第一图书网

编程算法新手自学手册

管西京 机械工业
出版时间:

2012-1  

出版社:

机械工业  

作者:

管西京  

Tag标签:

无  

内容概要

 
算法是指在有限步骤内求解某一问题所使用的一组定义明确的规则。程序员都会看重数据结构和算法的作用,水平越高,就越能理解算法的重要性。算法不仅是运算工具,更是程序的灵魂。《编程算法新手自学手册》循序渐进、由浅入深地详细讲解了基于C语言算法的核心技术,并通过具体实例的实现过程演练了各个知识点的具体使用流程。全书共11章,分为4篇。1~2章是基础篇,介绍算法开发所必需具备的基本知识,逐一讲解了9种算法思想的知识;3~5章是核心技术篇,逐一讲解了线性结构、树层次关系结构、网状关系结构等基本知识;6~8章是提高篇,逐一讲解了查找算法、内部排序算法、外部排序和文件等知识;9~11章是典型实战篇,分别详细讲解算法在数据结构和经典数学问题中的解法,通过多个典型实例的实现过程,详细讲解算法在常见领域中的综合应用流程,并穿插介绍了项目的实现技巧。全书采用故事性与趣味性相结合的对话讲解方式,并穿插了学习技巧和职场生存法则,引领读者全面掌握算法。
  《编程算法新手自学手册》不但适用于算法的初学者,也适用于有一定C语言基础基础的读者。

书籍目录

前言
第1章 算法——程序的灵魂
 1.1 了解算法
 1.1.1 算法的特征和发展由来
 1.1.2 为什么是程序的灵魂
 1.1.3 何谓算法
 1.1.4 算法的特性
 1.2 算法的表示方法——流程图
 1.3 算法的另一种表示方法——N——S流程图表示法
 1.4 用计算机语言表示算法
 1.5 算法在编程中的应用
 1.6 总结
 职场点拨——职场的“算法”
第2章 9种算法思想
 2.1 枚举算法思想
 2.1.1 枚举算法的特点
 2.1.2 算法思路
 2.1.3 应用实例
 2.1.4 总结
 2.2 递推算法思想
 2.2.1 递推算法的思路
 2.2.2 顺推法实例
 2.2.3 逆推法实例
 2.3 递归算法思想
 2.3.1 递归算法的特点
 2.3.2 递归算法实例
 2.4 分治算法思想
 2.4.1 分治算法的思路
 2.4.2 看一个经典问题——找出假币
 2.4.3 应用实例——大数相乘
 2.4.4 应用实例——世界杯比赛日程安排
 2.5 贪心算法思想
 2.5.1 贪心算法的思路
 2.5.2 应用实例——装箱问题
 2.5.3 应用实例——找零方案
 2.6 试探法算法思想
 2.6.1 试探法算法的思路
 2.6.2 应用实例——八皇后问题
 2.6.3 应用实例——彩票组合
 2.7 动态规划算法
 2.7.1 动态规划算法的思路
 2.7.2 应用实例
 2.8 迭代算法思想
 2.8.1 迭代算法的思路
 2.8.2 应用实例
 2.9 模拟算法思想
 2.9.1 模拟算法的思路
 2.9.2 应用实例——猜数游戏
 2.9.3 应用实例——掷骰子游戏
 2.10 最后做一个评价
 2.10.1 算法优劣标准
 2.10.2 算法效率的衡量方法
 职场点拨——程序员面试面面观
第3章 最简单的线性结构
 3.1 线性表
 3.1.1 线性表的特性
 3.1.2 顺序表的基本操作实现
 3.1.3 链表基本操作实现
 3.2 先进先出的结构——队列
 3.2.1 队列简介
 3.2.2 队列的抽象数据类型定义
 3.2.3 链队列和循环队列
 3.2.4 队列的基本操作
 3.2.5 队列的链式存储
 3.2.6 应用实例——电信排号程序
 3.3 后进先出的结构——栈
 3.3.1 什么是栈
 3.3.2 栈的基本操作
 3.3.3 应用实例
 职场点拨——同事相处之道
第4章 层次关系结构——树
 4.1 基本概念
 4.1.1 树的定义
 4.1.2 树的相关术语
 4.1.3 树的基本操作概况
 4.2 二叉树
 4.2.1 二叉树的定义
 4.2.2 二叉树的性质
 4.3 二叉树的存储
 4.3.1 顺序存储结构
 4.3.2 链式存储结构
 4.3.3 二叉树操作
 4.3.4 二叉树遍历
 4.3.5 使用二叉树
 4.4 线索二叉树
 4.4.1 线索二叉树的表示
 4.4.2 线索二叉树的操作
 4.5 最优二叉树——赫夫曼树
 4.5.1 几个相关概念
 4.5.2 构造赫夫曼树的过程
 4.5.3 赫夫曼编码
 职场点拨——谈职业素养
第5章 网状关系结构——图
 5.1 图的定义
 5.2 图的几个概念
 5.3 图的存储结构
 5.3.1 邻接矩阵
 5.3.2 邻接表
 5.3.3 十字链表
 5.3.4 创建图
 5.4 图的遍历
 5.4.1 深度优先搜索
 5.4.2 广度优先搜索
 5.4.3 遍历算法的常见应用
 5.4.4 测试图遍历实例
 5.5 图的连通性问题
 5.5.1 无向图的连通分量
 5.5.2 最小生成树
 5.5.3 关键路径
 5.6 最短路径
 5.6.1 求某一顶点到其他各顶点的最短路径
 5.6.2 求任意一对顶点间的最短路径
 职场点拨——和领导相处
第6章 常用算法——查找
 6.1 查找的基本概念
 6.2 基于线性表的查找法
 6.2.1 顺序查找法
 6.2.2 折半查找法
 6.2.3 分块查找法
 6.3 基于树的查找法
 6.3.1 二叉排序树
 6.3.2 平衡二叉排序树
 6.4 计算式查找法——散列法
 6.4.1 散列函数的构造方法
 6.4.2 处理冲突的方法
 6.4.3 散列表的查找过程
 6.4.4 散列法性能分析
 6.5 索引查找
 6.5.1 索引查找基础
 6.5.2 索引查找算法的应用
 职场点拨——寻兼职
第7章 常用算法——内部排序
 7.1 排序基础
 7.2 插入类排序
 7.2.1 直接插入排序
 7.2.2 折半插入排序
 7.2.3 表插入排序
 7.2.4 希尔排序
 7.3 交换类排序法
 7.3.1 冒泡排序(相邻比序法)
 7.3.2 快速排序
 7.4 选择类排序法
 7.4.1 直接选择排序(Straight Selection Sort)
 7.4.2 树形选择排序
 7.4.3 堆排序
 7.5 归并排序
 7.5.1 归并排序思想
 7.5.2 二路归并算法
 7.5.3 归并排序的实现方法
 7.6 各种排序方法的综合比较
 职场点拨——兼职可靠吗?
第8章 外部排序和文件
 8.1 外存信息的特性
 8.1.1 磁带存储器
 8.1.2 磁盘存储器
 8.2 外排序的基本方法
 8.2.1 磁盘排序
 8.2.2 磁带排序
 8.3 文件的基本概念
 8.3.1 文件中的常用基本概念
 8.3.2 文件的有关操作
 8.4 文件的组织方式
 8.4.1 顺序文件
 8.4.2 索引文件
 8.4.3 ISAM文件
 8.4.4 VSAM文件
 8.4.5 散列文件
 8.4.6 多关键字文件
 职场点拨——换工作的注意事项
第9章 算法在数学领域中的应用
 9.1 求两个数的最大公约数和最小公倍数
 9.2 哥德巴赫猜想的近似证明
 9.3 三色球问题
 9.4 百钱买百鸡问题
 9.5 完全数
 9.6 亲密数
 9.7 水仙花数
 9.8 自守数
 9.9 素数
 9.9.1 求素数
 9.9.2 回文素数
 9.9.3 平方回文数
 9.10 阶乘
 9.10.1 递归计算阶乘
 9.10.2 大数的阶乘
 9.11 新郎和新娘的问题
 9.12 年龄几何
 9.13 三色球问题
 9.14 马克思手稿中的数学题
 9.15 正整数分解质因数
 9.16 方程求解
 9.16.1 求解线性方程组介绍
 9.16.2 求解非线性方程组介绍
 9.16.3 高斯消元法求解线性方程组
 9.16.4 二分法解非线性方程
 9.16.5 牛顿迭代法解非线性方程
 9.17 矩阵运算
 9.18 孪生素数
 9.18.1 孪生素数介绍
 9.18.2 求解孪生素数
 9.19 一元多项式运算
 9.19.1 编程实现一元多项式的加法运算
 9.19.2 编程实现一元多项式的减法运算
 职场点拨——谈学习方法
第10章 数据结构问题
 10.1 约瑟夫环
 10.2 大整数运算
 10.2.1 用数组实现大整数运算
 10.2.2 用链表实现大整数运算
 10.3 计算机进制转换
 10.4 中序表达式转换为后序表达式
 职场点拨——团队成员的素质
第11章 算法的经典问题
 11.1 存钱利息最大化
 11.2 歌星大奖赛
 11.3 借书方案知多少
 11.4 打鱼还是晒网
 11.5 捕鱼和分鱼
 11.6 出售金鱼
 11.7 平分七筐鱼
 11.8 绳子的长度和井深
 11.9 鸡兔同笼
 11.10 汉诺塔
 11.10.1 递归法
 11.10.2 非递归法
 11.11 背包问题
 11.11.1 动态规划法
 11.11.2 递归法
 11.12 马踏棋盘
 11.12.1 循环查找
 11.12.2 递归法实现
 11.12.3 栈实现
 11.13 八皇后问题
 11.13.1 递归法
 11.13.2 循环法
 11.14 农夫过河
 11.15 青蛙过河
 11.16 三色旗
 11.17 取石子
 11.18 生命游戏
 11.19 黑白棋问题
 11.20 停车场管理
 11.21 约瑟夫生者死者游戏
 11.22 骑士迷宫问题
 职场点拨——谈升职
  

章节摘录

版权页:插图:分治算法的经典问题是找出假币。给你一个装有16个硬币的袋子,在这16个硬币中有一个是伪造的,并且那个伪造的硬币比真的硬币要轻一些。我们的任务是找出这个伪造的硬币。为了帮助我们完成这个任务,现提供一台可用宋比较两组硬币重量的仪器,利用这台仪器,可以判断这两组硬币的重量是否相同。先比较硬币1与硬币2的重量,如果硬币1比硬币2轻,则硬币1是伪造的;如果硬币2比硬币1轻,则硬币2是伪造的,这样就完成了任务。如果两枚硬币重量相等,则继续比较,开始比较硬币3和硬币4。同理如果有…个硬币轻一些,则完成寻找假币的任务;如果两枚硬币重量相等,则继续比较硬币5和硬币6。按照上述方式,最多通过8次比较宋判断假币的存在并完成任务。还有一种解决方法可以解决上述问题,就是利用分治算法。假如把16个硬币的例子看成一个大的问题,然后按照如下3步来解决问题。第1步:把这一问题分成两个小问题。随机选择8个硬币作为第一组称为A组,剩下的8个硬币作为第二组称为B组。这样,就把16个硬币的问题分成两个8个硬币的问题来解决。


编辑推荐

《编程算法新手自学手册》附赠DVD-ROM光盘,全书PPT教学资源,520分钟讲解视频,全部程序源代码,百个应用型实例。

图书封面

图书标签Tags

广告

下载页面


编程算法新手自学手册 PDF格式下载



这本书很适合学习了解算法的入门读者,以生动有趣的例子阐释复杂深邃的算法原理,更能帮助有一定C语言基础的读者更好的理解透彻


光盘裂了,电脑上还是可以驱动的。非常好的一本书,适合刚入门


买书要做好心理准备


很实用。受益匪浅。


欠缺在算法应用方面的案例,如果可以增加图形更好。买来只作个别参考。


看了之后感觉不怎么样,都是说让去看源码,连基本的问题都没分析清楚


解释得倒很清楚,但程序有错啊,第5个例子就是错的,还要不要看下去呢?


老公要的书,还是不错的


书的质量很差! 我买了那么多书,这本书就跟地摊货没什么区别,我很想退货啊!


商品蛮好,没想到是正品


初学者容易上手,感觉不错!


相关图书