展开全部

主编推荐语

一本书的容量,讲解了入门类、范例类和项目实战类三类图书的内容。

内容简介

算法是程序的灵魂,只有掌握了算法,才能轻松地驾驭程序开发。算法能够告诉开发者在面对一个项目功能时用什么思路去实现,有了这个思路后,编程工作只需遵循这个思路去实现即可。

本书循序渐进、由浅入深地详细讲解了算法实现的核心技术,并通过具体实例的实现过程演练了各个知识点的具体使用流程。 全书共20章,其中,第1章讲解了算法为什么是程序的灵魂;第2~8章分别讲解了常用的算法,如线性表、队列和栈,树,图,查找算法,内部排序算法,外部排序算法等知识,这些内容都是算法技术核心的语法知识;第9~15章分别讲解了经典的数据结构问题、解决数学问题、解决趣味问题、解决图像问题、算法的经典问题、解决奥赛问题、常见算法应用实践等高 级编程技术,这些内容是算法技术的重点和难点;第16~20章分别通过5个综合实例的实现过程,介绍了算法在综合开发项目中的使用流程和发挥的作用。

全书内容以“技术解惑”和“实践应用”贯穿全书,引领读者全面掌握算法的核心技术。本书不但适合算法研究和学习的初学者,也适合有一定算法基础的读者,还可以作为大中专院校相关专业师生的学习用书和培训学校的教材。

目录

  • 版权信息
  • 内容提要
  • 前言
  • 一本合适的书
  • 本书的特色
  • 本书的内容
  • 本书的读者对象
  • 致谢
  • 本书实例
  • 第1章 算法是程序的灵魂
  • 1.1 算法的基础
  • 1.1.1 算法的特征
  • 1.1.2 何为算法
  • 1.2 计算机中的算法
  • 1.2.1 认识计算机中的算法
  • 1.2.2 为什么说算法是程序的灵魂
  • 1.3 在计算机中表示算法的方法
  • 1.3.1 用流程图来表示算法
  • 1.3.2 用N-S流程图来表示算法
  • 1.3.3 用计算机语言表示算法
  • 1.4 技术解惑
  • 第2章 常用的算法思想
  • 2.1 枚举算法思想
  • 2.1.1 枚举算法基础
  • 2.1.2 实战演练——百钱买百鸡
  • 2.1.3 实战演练——解决“填写运算符”问题
  • 2.2 递推算法思想
  • 2.2.1 递推算法基础
  • 2.2.2 实践演练——解决“斐波那契数列”问题
  • 2.2.3 实践演练——解决“银行存款”问题
  • 2.3 递归算法思想
  • 2.3.1 递归算法基础
  • 2.3.2 实践演练——解决“汉诺塔”问题
  • 2.3.3 实践演练——解决“阶乘”问题
  • 2.4 分治算法思想
  • 2.4.1 分治算法基础
  • 2.4.2 实践演练——解决“大数相乘”问题
  • 2.4.3 实践演练——欧洲冠军杯比赛日程安排
  • 2.5 贪心算法思想
  • 2.5.1 贪心算法基础
  • 2.5.2 实践演练——解决“装箱”问题
  • 2.5.3 实践演练——解决“找零方案”问题
  • 2.6 试探法算法思想
  • 2.6.1 试探法算法基础
  • 2.6.2 实践演练——解决“八皇后”问题
  • 2.6.3 实践演练——体彩29选7彩票组合
  • 2.7 迭代算法
  • 2.7.1 迭代算法基础
  • 2.7.2 实践演练——解决“求平方根”问题
  • 2.8 模拟算法思想
  • 2.8.1 模拟算法的思路
  • 2.8.2 实践演练——解决“猜数字游戏”问题
  • 2.8.3 实践演练——解决“掷骰子游戏”问题
  • 2.9 技术解惑
  • 2.9.1 衡量算法的标准是什么
  • 2.9.2 在什么时候选择使用枚举法
  • 2.9.3 递推和递归有什么差异
  • 2.9.4 总结分治法能解决什么类型的问题
  • 2.9.5 分治算法的机理是什么
  • 2.9.6 为什么说贪婪算法并不是最优解决问题的方案
  • 2.9.7 回溯算法会影响算法效率吗
  • 2.9.8 递归算法与迭代算法有什么区别
  • 第3章 线性表、队列和栈
  • 3.1 线性表详解
  • 3.1.1 线性表的特性
  • 3.1.2 顺序表操作
  • 3.1.3 实践演练——顺序表操作函数
  • 3.1.4 实践演练——操作顺序表
  • 3.1.5 链表操作
  • 3.1.6 实践演练——定义链表操作函数
  • 3.1.7 实践演练——操作链表
  • 3.2 先进先出的队列详解
  • 3.2.1 什么是队列
  • 3.2.2 链队列和循环队列
  • 3.2.3 队列的基本操作
  • 3.2.4 队列的链式存储
  • 3.2.5 实践演练——完整的顺序队列的操作
  • 3.2.6 实践演练——完整的循环队列的操作
  • 3.2.7 实践演练——实现一个排号程序
  • 3.3 后进先出栈
  • 3.3.1 什么是栈
  • 3.3.2 栈的基本分类
  • 3.3.3 实践演练——栈操作函数
  • 3.3.4 实践演练——测试栈操作
  • 3.4 技术解惑
  • 3.4.1 线性表插入操作的时间复杂度是多少
  • 3.4.2 线性表删除操作的时间复杂度是多少
  • 3.4.3 线性表按值查找操作的时间复杂度是多少
  • 3.4.4 线性表链接存储(单链表)操作的11种算法是什么
  • 3.4.5 堆和栈的区别是什么
  • 第4章 树
  • 4.1 树基础
  • 4.1.1 什么是树
  • 4.1.2 树的相关概念
  • 4.2 二叉树详解
  • 4.2.1 二叉树的定义
  • 4.2.2 二叉树的性质
  • 4.2.3 二叉树存储
  • 4.2.4 操作二叉树
  • 4.2.5 遍历二叉树
  • 4.2.6 线索二叉树
  • 4.2.7 实践演练——测试二叉树操作函数
  • 4.2.8 实践演练——C++的二叉树操作
  • 4.2.9 实践演练——实现各种线索二叉树的操作
  • 4.2.10 实践演练——测试线索二叉树的操作
  • 4.3 霍夫曼树
  • 4.3.1 霍夫曼树基础
  • 4.3.2 实践演练——实现各种霍夫曼树操作
  • 4.3.3 实践演练——测试霍夫曼树的操作
  • 4.3.4 总结霍夫曼编码的算法实现
  • 4.4 技术解惑
  • 4.4.1 树和二叉树的差别是什么
  • 4.4.2 二叉树和链表的效率谁更牛
  • 4.4.3 如何打印二叉树中的所有路径
  • 第5章 图
  • 5.1 图的起源
  • 5.2 图的相关概念
  • 5.3 存储结构
  • 5.3.1 表示顶点之间相邻关系的邻接矩阵
  • 5.3.2 邻接表
  • 5.3.3 十字链表
  • 5.3.4 实践演练——创建一个邻接矩阵
  • 5.3.5 实践演练——测试霍夫曼树的操作
  • 5.4 图的遍历
  • 5.4.1 深度优先搜索
  • 5.4.2 广度优先搜索
  • 5.4.3 实践演练——求一条包含图中所有顶点的简单路径
  • 5.4.4 实践演练——求距v0的各顶点中最短路径长度最长的一个顶点
  • 5.4.5 实践演练——实现图的遍历操作方法
  • 5.4.6 实践演练——实现图的遍历操作
  • 5.5 图的连通性
  • 5.5.1 无向图连通分量
  • 5.5.2 最小生成树
  • 5.5.3 实践演练——创建一个最小生成树
  • 5.5.4 实践演练——调用最小生成树函数实现操作
  • 5.5.5 关键路径
  • 5.6 寻求最短路径
  • 5.6.1 求某一顶点到其他各顶点的最短路径
  • 5.6.2 任意一对顶点间的最短路
  • 5.6.3 实践演练——创建最短路径算法函数
  • 5.6.4 实践演练——调用最短路径算法实现测试
  • 5.7 技术解惑
  • 5.7.1 几种最短路径算法的比较
  • 5.7.2 邻接矩阵与邻接表的对比
  • 5.7.3 如何表示有向图的十字链表存储
  • 5.7.4 比较深度优先算法和广度优先算法
  • 第6章 查找算法
  • 6.1 几个相关概念
  • 6.2 基于线性表的查找法
  • 6.2.1 顺序查找法
  • 6.2.2 实践演练——实现顺序查找算法
  • 6.2.3 实践演练——改进的顺序查找算法
  • 6.2.4 折半查找法
  • 6.2.5 实践演练——使用折半查找算法查找数据
  • 6.2.6 实践演练——查找10个已排好序的数
  • 6.2.7 分块查找法
  • 6.3 基于树的查找法
  • 6.3.1 二叉排序树
  • 6.3.2 实践演练——将数据插入到二叉树节点中
  • 6.3.3 实践演练——删除二叉树中一个节点
  • 6.3.4 平衡二叉排序树
  • 6.4 哈希法
  • 6.4.1 哈希法的基本思想
  • 6.4.2 构造哈希函数
  • 6.4.3 处理冲突
  • 6.4.4 哈希表的查找过程
  • 6.5 索引查找
  • 6.5.1 索引查找的过程
  • 6.5.2 实践演练——索引查找法查找指定的关键字
  • 6.5.3 实践演练——实现索引查找并插入一个新关键字
  • 6.6 技术解惑
  • 6.6.1 分析查找算法的性能
  • 6.6.2 演示对二叉树的完整操作
  • 6.6.3 分析哈希法的性能
  • 第7章 内部排序算法
  • 7.1 排序基础
  • 7.1.1 排序的目的和过程
  • 7.1.2 内部排序与外部排序
  • 7.1.3 稳定排序与不稳定排序
  • 7.2 插入排序算法
  • 7.2.1 直接插入排序
  • 7.2.2 实践演练——编写直接插入排序算法
  • 7.2.3 实践演练——插入排序算法对数据进行排序处理
  • 7.2.4 折半插入排序
  • 7.2.5 表插入排序
  • 7.2.6 希尔排序
  • 7.2.7 实践演练——使用希尔排序算法对数据进行排序处理
  • 7.2.8 实践演练——使用希尔排序处理数组
  • 7.3 交换类排序法
  • 7.3.1 冒泡排序(相邻比序法)
  • 7.3.2 快速排序
  • 7.3.3 实践演练——用冒泡排序算法实现对数据的排序处理
  • 7.3.4 实践演练——使用快速排序算法
  • 7.4 选择类排序法
  • 7.4.1 直接选择排序
  • 7.4.2 树形选择排序
  • 7.4.3 堆排序
  • 7.4.4 实践演练——直接选择排序算法对数据的排序处理
  • 7.4.5 实践演练——堆排序算法实现排序处理
  • 7.5 归并排序
  • 7.5.1 归并排序思想
  • 7.5.2 两路归并算法的思路
  • 7.5.3 实现归并排序
  • 7.5.4 实践演练— —用归并算法实现排序处理
  • 7.5.5 实践演练——使用归并排序算法求逆序对
  • 7.6 基数排序
  • 7.6.1 多关键字排序
  • 7.6.2 链式基数排序
  • 7.7 技术解惑
  • 7.7.1 插入排序算法的描述是什么
  • 7.7.2 希尔排序和插入排序谁更快
  • 7.7.3 快速排序的时间耗费是多少
  • 7.7.4 堆排序与直接选择排序的区别是什么
  • 7.7.5 归并排序的效率如何,应该如何选择
  • 7.7.6 综合比较各种排序方法
  • 第8章 外部排序算法
  • 8.1 外部信息概览
  • 8.1.1 磁带存储器
  • 8.1.2 磁盘存储器
  • 8.2 外部排序的基本方法
  • 8.2.1 磁盘排序
  • 8.2.2 磁带排序
  • 8.3 文件的基础知识
  • 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.2.1 数组实现大整数运算
  • 9.2.2 链表实现大整数运算
  • 9.3 计算机进制转换
  • 9.4 中序表达式转换为后序表达式
  • 第10章 解决数学问题
  • 10.1 最大公约数和最小公倍数
  • 10.2 哥德巴赫猜想
  • 10.3 完全数
  • 10.4 亲密数
  • 10.5 自守数
  • 10.6 方程求解
  • 10.6.1 用高斯消元法解方程组
  • 10.6.2 用二分法解非线性方程
  • 10.6.3 用牛顿迭代法解非线性方程
  • 10.7 矩阵运算
  • 10.8 实现n×n整数方阵的转置
  • 10.9 一元多项式运算
  • 10.9.1 一元多项式的加法运算
  • 10.9.2 一元多项式的减法运算
  • 第11章 解决趣味问题
  • 11.1 歌星大奖赛
  • 11.2 借书方案
  • 11.3 打鱼还是晒网
  • 11.4 捕鱼和分鱼
  • 11.5 出售金鱼
  • 11.6 平分七筐鱼
  • 11.7 绳子的长度和井深
  • 11.8 鸡兔同笼
  • 11.9 汉诺塔
  • 11.9.1 递归法
  • 11.9.2 非递归法
  • 11.10 马踏棋盘
  • 11.10.1 使用循环查找法
  • 11.10.2 使用递归法
  • 11.10.3 使用栈方法
  • 11.11 三色球问题
  • 11.12 新郎和新娘问题
  • 11.13 计算年龄
  • 第12章 解决图像问题
  • 12.1 “八皇后”问题
  • 12.1.1 使用递归法
  • 12.1.2 使用循环法
  • 12.2 生命游戏
  • 12.3 黑白棋问题
  • 12.4 “骑士迷宫”问题
  • 12.5 找出迷宫问题中的所有路径
  • 第13章 算法的经典问题
  • 13.1 存钱利息最大化
  • 13.2 背包问题
  • 13.2.1 使用动态规划法
  • 13.2.2 使用递归法
  • 13.3 农夫过河
  • 13.4 三色旗问题
  • 13.5 取石子
  • 13.6 停车场管理
  • 13.7 约瑟夫生死者游戏
  • 第14章 解决奥赛问题
  • 14.1 孪生素数问题
  • 14.2 百钱买百鸡问题
  • 14.3 马克思手稿中的数学题
  • 14.4 正整数分解质因数
  • 14.5 水仙花数
  • 14.6 素数
  • 14.6.1 求1000以内的所有素数
  • 14.6.2 求1000以内的回文素数
  • 14.6.3 求1000以内的平方回文数
  • 14.7 阶乘
  • 14.7.1 使用递归法
  • 14.7.2 实现大数的阶乘
  • 14.8 青蛙过河
  • 14.9 过河卒
  • 14.10 素数组合
  • 14.11 校验码问题
  • 14.12 老师排座位
  • 14.13 模拟立体图
  • 14.14 采药问题
  • 14.15 等价表达式问题
  • 14.16 购买年货问题
  • 第15章 常见算法应用实践
  • 15.1 实现Ping功能中的校验和算法
  • 15.2 24点游戏算法
  • 15.3 洗牌
  • 15.4 21点游戏
  • 15.5 2048游戏
  • 15.6 引用计数算法
  • 15.7 猫捉老鼠游戏
  • 第16章 俄罗斯方块游戏
  • 16.1 游戏功能描述
  • 16.2 游戏总体设计
  • 16.2.1 功能模块设计
  • 16.2.2 数据结构设计
  • 16.2.3 构成函数介绍
  • 16.3 游戏具体实现
  • 16.3.1 预处理
  • 16.3.2 主函数——递归算法
  • 16.3.3 初始化界面处理——分治算法
  • 16.3.4 时钟中断处理
  • 16.3.5 成绩、速度和帮助处理
  • 16.3.6 满行处理——碰撞检测算法
  • 16.3.7 方块显示和消除处理——分治算法
  • 16.3.8 游戏方块操作判断处理——枚举算法
  • 第17章 学生成绩管理系统
  • 17.1 系统总体描述
  • 17.1.1 开发目标和项目背景介绍
  • 17.1.2 系统功能模块
  • 17.2 系统总体设计
  • 17.2.1 功能模块设计
  • 17.2.2 数据结构设计
  • 17.2.3 构成函数介绍
  • 17.3 系统具体实现
  • 17.3.1 预处理
  • 17.3.2 主函数main——递归算法
  • 17.3.3 系统主菜单函数——模拟算法
  • 17.3.4 表格显示信息
  • 17.3.5 信息查找定位——分治算法
  • 17.3.6 格式化输入数据——递归、分治算法
  • 17.3.7 增加学生记录——试探算法
  • 17.3.8 查询学生记录——分治算法
  • 17.3.9 删除学生记录——分治、递归算法
  • 17.3.10 修改学生记录——递归、模拟算法
  • 17.3.11 插入学生记录——递推算法
  • 17.3.12 统计学生记录——分治算法
  • 17.3.13 排序处理——插入排序算法
  • 17.3.14 存储学生信息
  • 第18章 绘图板系统
  • 18.1 项目规划分析
  • 18.1.1 绘图板的核心技术
  • 18.1.2 功能描述
  • 18.1.3 总体设计
  • 18.2 设计数据结构
  • 18.2.1 设计数据结构
  • 18.2.2 规划系统函数
  • 18.3 具体编码
  • 18.3.1 预处理模块
  • 18.3.2 功能控制模块——递推、递归算法
  • 18.3.3 保存加载模块——递归算法
  • 18.3.4 鼠标控制模块——枚举、递归算法
  • 18.3.5 图形绘制模块——递归、分治、枚举、递推算法
  • 18.3.6 主函数模块——模拟、递归算法
  • 18.4 项目调试
  • 第19章 UDP传输系统
  • 19.1 项目规划分析
  • 19.1.1 功能描述
  • 19.1.2 功能模块设计
  • 19.1.3 系统流程图
  • 19.1.4 广播消息发送流程
  • 19.1.5 广播消息接收流程图
  • 19.1.6 多播消息接收流程图
  • 19.2 设计数据结构
  • 19.2.1 定义常量
  • 19.2.2 定义全局变量
  • 19.3 规划系统函数
  • 19.4 具体编码
  • 19.4.1 预处理
  • 19.4.2 初始化模块处理
  • 19.4.3 获取参数——枚举算法
  • 19.4.4 用户帮助模块——递归算法
  • 19.4.5 广播信息发送模块——试探算法
  • 19.4.6 广播信息接收模块——试探算法
  • 19.4.7 多播功能控制模块——试探算法
  • 19.4.8 多播消息发送模块——试探算法
  • 19.4.9 多播消息接收模块——试探算法
  • 19.4.10 主函数——递归算法
  • 19.5 项目调试
  • 第20章 推箱子游戏
  • 20.1 项目规划分析
  • 20.1.1 功能描述
  • 20.1.2 功能模块分析
  • 20.1.3 剖析执行流程
  • 20.2 设计数据结构
  • 20.3 规划系统函数
  • 20.4 具体编码
  • 20.4.1 预处理
  • 20.4.2 初始化模块——递归算法
  • 20.4.3 画图模块——试探算法
  • 20.4.4 移动箱子模块——试探、分治、递归、枚举算法
  • 20.4.5 移动小人模块——枚举、试探算法
  • 20.4.6 功能控制模块——递归、分治算法
  • 20.4.7 系统主函数——枚举、模拟、递归、试探算法
  • 20.5 项目调试
  • 欢迎来到异步社区!
  • 异步社区的来历
  • 社区里都有什么?
  • 购买图书
  • 下载资源
  • 与作译者互动
  • 灵活优惠的购书
  • 纸电图书组合购买
  • 社区里还可以做什么?
  • 提交勘误
  • 写作
  • 会议活动早知道
  • 加入异步
展开全部

评分及书评

尚无评分
目前还没人评分

出版方

人民邮电出版社

人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。