编程算法新手自学手册
出版信息
管西京 / 机械工业 / 2012-1 / 69.80元
内容简介
《编程算法新手自学手册》主要内容简介:算法是指在有限步骤内求解某一问题所使用的一组定义明确的规则。程序员都会看重数据结构和算法的作用,水平越高,就越能理解算法的重要性。算法不仅是运算工具,更是程序的灵魂。《编程算法新手自学手册》循序渐进、由浅入深地详细讲解了基于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 骑士迷宫问题 职场点拨——谈升职