程序员的数学思维修炼+妙趣横生的算法(套装共2册)
作者:周颖,杨峰等著
出版:清华大学出版社 2015.5
丛书:妙趣横生的算法
页数:716
定价:104.80 元
ISBN-13:9787302350606
ISBN-10:7302350604
去豆瓣看看 《程序员的数学思维修炼(趣味解读)》
第1章 数据的表示
1.1 一则童话
1.1.1 0和1的故事
1.1.2 0是什么都没有?
1.1.3 0的位置
1.1.4 程序中的
1.2 司空见惯的十进制数
1.2.1 远古的结绳记事
1.2.2 什么是十进制计数
1.2.3 为啥人类习惯十进制
1.2.4 十进制运算规则
1.2.5 十进制数的分解
1.2.6 20!等于多少
1.2.7 大整数构想
1.3 为啥要用二进制
1.3.1 人脑与电脑
1.3.2 二进制计数规则
1.3.3 简单的二进制运算规则
1.3.4 二进制数的分解
1.3.5 十进制数转换为二进制数
1.4 还有哪些进制
1.4.1 神奇的八卦:八进制
1.4.2 钟表使用的十二进制
1.4.3 半斤八两:十六进制
1.4.4 60年一个甲子:六十进制
1.4.5 各种进制之间的转换
1.4.6 二进制与八进制、十六进制的转换
第2章 神奇的素数
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.2.4 孪生素数分布情况
2.3 使用素数的RSA算法
2.3.1 什么是RSA
2.3.2 RSA算法基础
2.3.3 RSA算法实践
2.3.4 RSA应用:数字签名
2.3.5 RSA被破解的可能性
2.4 哥德巴赫猜想
2.4.1 哥德巴赫猜想是什么
2.4.2 数值验证
2.5 梅森素数
2.5.1 什么是梅森素数
2.5.2 已知的梅森素数列表
第3章 递归——自己调用自己
3.1 从前有座山,山里有座庙
3.1.1 老和尚讲的故事
3.1.2 德罗斯特效应
3.1.3 什么是递归
3.1.4 用递归能解决哪些问题
3.1.5 一个简单例子:求最大公约数
3.2 用递归计算阶乘
3.2.1 阶乘该怎么计算
3.2.2 阶乘的递归计算方法
3.2.3 递归的过程
3.2.4 递归的本质:缩小问题规模
3.3 汉诺塔
3.3.1 古老的传说
3.3.2 从两个盘考虑
3.3.3 找出递归结构
3.3.4 实现程序
3.3.5 究竟需要移动多少次
3.4 斐波那契数列
3.4.1 兔子的家族
3.4.2 从最初几月数据中找规律
3.4.3 斐波那契数列
3.4.4 神奇的魔八方
第4章 排列组合——让数选边站队
4.1 把所有情况都列出来
4.1.1 从0还是1开始
4.1.2 赛程安排
4.2 乘法原理
4.2.1 行程安排的问题
4.2.2 乘法原理适用条件
4.2.3 棋盘上棋子的放法
4.2.4 买彩票保证中奖的方法
4.3 加法原理
4.3.1 仍然是行程问题
4.3.2 总结出的加法原理
4.3.3 骰子出现偶数的次数
4.4 排列与组合的关系
4.4.1 排列
4.4.2 组合
4.4.3 排列与组合的联系
4.4.4 可重排列
4.5 计算机中的字符编码
4.5.1 ASCII码能表示的字符数量
4.5.2 能表示更大范围的编码
4.6 密码的长度
4.6.1 容易破解的密码
4.6.2 多长的密码才安全
4.6.3 密码中使用的字符数量也很关键
第5章 余数——数据分组
5.1 复习小学的余数
5.1.1 自然数的余数
5.1.2 余数的性质
5.1.3 用余数进行分组
5.2 日历中的数学
5.2.1 n天后是星期几
5.2.2 下月的今天是星期几
5.2.3 10年后的“今天”是星期几
5.3 心灵感应魔术
5.3.1 一个小魔术
5.3.2 魔术师是怎么猜出来的
5.4 奇偶校验
5.4.1 不可靠的网络传输
5.4.2 用奇偶校验检查错误
5.5 吕洞宾不能坐首位
5.5.1 座位安排
5.5.2 试排座位找规律
5.5.3 西方的约瑟夫环
5.5.4 用数学方法解约瑟夫环
5.6 智叟分牛
5.6.1 遗产分配难题
5.6.2 智叟给出的分配方案
5.6.3 分配原理
第6章 概率——你运气好吗
6.1 初中学习过的概率
6.1.1 谁先开球
6.1.2 用程序模拟抛硬币
6.1.3 什么是概率
6.1.4 必然事件与不可能事件
6.1.5 概率的基本性质
6.2 百枚钱币鼓士气
6.2.1 狄青的计谋
6.2.2 全为正面的概率是多少
6.2.3 必然还是偶然
6.3 庄家的胜率是多少
6.3.1 一个看似公平的游戏
6.3.2 庄家能赢钱吗
6.3.3 庄家盈利比率
6.3.4 游戏参与者获胜的概率
6.4 你能中奖吗
6.4.1 想中大奖吗
6.4.2 计算中奖概率
6.5 渔塘中有多少条鱼
6.5.1 该怎么估算渔塘中的鱼
6.5.2 用概率来估算
6.5.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 爱因斯坦的72法则
7.3 对折纸张
7.3.1 有趣的问题:纸张对折
7.3.2 100米长的纸能对折几次
7.3.3 计算对折次数的程序
7.4 一棋盘的麦子
7.4.1 舍罕王的赏赐
7.4.2 需要多少麦粒
7.5 折半法的运用
7.5.1 翻番的逆运算
7.5.2 找出假硬币
7.5.3 编写程序找出假硬币
7.5.4 折半法在查找中的应用
第8章 数理逻辑——非此即彼
8.1 逻辑的重要性
8.1.1 模棱两可的表述
8.1.2 肯定或否定
8.1.3 程序中的逻辑判断
8.2 命题逻辑
8.2.1 什么是命题
8.2.2 命题的逻辑形式
8.2.3 简单命题
8.2.4 复合命题
8.2.5 复合命题的联结词
8.3 布尔逻辑
8.3.1 逻辑或
8.3.2 逻辑与
8.3.3 逻辑非
8.3.4 逻辑异或
8.3.5 二进制位运算
8.4 考虑到各种可能了吗
8.4.1 逻辑重叠的实例
8.4.2 逻辑遗漏的实例
8.4.3 用数轴确定边界
8.5 用卡诺图简化逻辑函数
8.5.1 什么是卡诺图
8.5.2 三变量卡诺图
8.5.3 四变量卡诺图
8.5.4 卡诺图化简
8.5.5 卡诺图中的相邻
第9章 推理——逻辑的应用
9.1 演绎推理
9.1.1 认识演绎推理点
9.1.2 三段论
9.1.3 选言推理
9.1.4 假言推理
9.1.5 关系推理
9.1.6 演绎推理综合实例
9.2 归纳推理
9.2.1 什么是归纳推理
9.2.2 完全归纳推理
9.2.3 不完全归纳推理
9.3 足球比赛的得分
9.3.1 粗心的记分员
9.3.2 从已有数据推算出比分
第10章 几何图形构造
10.1 花盆摆放问题
10.1.1 10盆花摆成5行,每行4盆
10.1.2 转变思路,找出答案
10.1.3 升级问题(10盆花摆10行,每行3盆)
10.2 残缺的棋盘能补上吗?
10.2.1 被切割的棋盘
10.2.2 能拼接出残缺棋盘吗
10.3 线条哪里去了?
10.3.1 神奇的魔术
10.3.2 解析丢失的线条
10.4 图形剪拼
10.4.1 均分三角形
10.4.2 拼接正方形
第11章 统筹规划
11.1 认识统筹规划
11.1.1 田忌赛马
11.1.2 为什么会赢
11.2 生活中的统筹规划
11.2.1 匆忙的早晨
11.2.2 如何节约运输成本
11.3 著名的背包问题
11.3.1 什么是背包问题
11.3.2 用递归程序解决背包问题
11.3.3 用穷举法解决背包问题
《妙趣横生的算法(C语言实现)第2版》
第1篇 算法基础
第1章 数据结构基础
1.1 什么是数据结构
1.2 顺序表
1.2.1 顺序表的定义
1.2.2 向顺序表中插入元素
1.2.3 从顺序表中删除元素
1.2.4 实例与分析
1.3 链表
1.3.1 创建一个链表
1.3.2 向链表中插入结点
1.3.3 从链表中删除结点
1.3.4 销毁一个链表
1.3.5 实例与分析
1.4 栈
1.4.1 栈的定义
1.4.2 创建一个栈
1.4.3 入栈操作
1.4.4 出栈操作
1.4.5 栈的其他操作
1.4.6 实例与分析
1.5 队列
1.5.1 队列的定义
1.5.2 创建一个队列
1.5.3 入队列操作
1.5.4 出队列操作
1.5.5 销毁一个队列
1.5.6 循环队列的概念
1.5.7 循环队列的实现
1.5.8 实例与分析
1.6 树结构
1.6.1 树的概念
1.6.2 树结构的计算机存储形式
1.6.3 二叉树的定义
1.6.4 二叉树的遍历
1.6.5 创建二叉树
1.6.6 实例与分析
1.7 图结构
1.7.1 图的概念
1.7.2 图的存储形式
1.7.3 邻接表的定义
1.7.4 图的创建
1.7.5 图的遍历(1)——深度优先搜索
1.7.6 图的遍历(2)——广度优先搜索
1.7.7 实例与分析
1.8 章后习题
第2章 常用的查找与排序方法
2.1 顺序查找
2.2 折半查找
2.3 排序的概述
2.4 直接插入排序
2.5 选择排序
2.6 冒泡排序
2.7 希尔排序
2.8 快速排序
2.9 堆排序
2.10 各种排序算法性能比较
2.11 章后习题
第3章 常用的算法思想
3.1 什么是算法
3.2 算法的分类表示及测评
3.2.1 算法的分类
3.2.2 算法的表示
3.2.3 算法性能的测评
3.3 穷举法思想
3.3.1 基本概念
3.3.2 寻找给定区间的素数
3.3.3 TOM的借书方案
3.4 递归与分治思想
3.4.1 基本概念
3.4.2 计算整数的划分数
3.4.3 递归的折半查找算法
3.5 贪心算法思想
3.5.1 基本概念
3.5.2 最优装船问题
3.6 回溯法
3.6.1 基本概念
3.6.2 四皇后问题求解
3.7 数值概率算法
3.7.1 基本概念
3.7.2 计算定积分
3.8 章后习题
第2篇 常用算法实例解析
第4章 编程基本功
4.1 字符类型统计器
4.2 计算字符的ASCII码
4.3 嵌套if-else语句的妙用
4.4 基于switch语句的译码器
4.5 判断闰年
4.6 指针变量作参数
4.7 矩阵的转置运算
4.8 矩阵的乘法运算
4.9 巧用位运算
4.10 文件的读写
4.11 计算文件的大小
4.12 记录程序的运行时间
4.13 十进制/二进制转化器
4.14 打印特殊图案
4.15 打印杨辉三角
4.16 复杂级数的前n项和
4.17 寻找矩阵中的“鞍点”
4.18 n阶勒让德多项式求解
4.19 递归反向输出字符串
4.20 一年中的第几天
第5章 数学趣题(一)
5.1 舍罕王的失算
5.2 求两个数的最大公约数和最小公倍数
5.3 歌德巴赫猜想的近似证明
5.4 三色球问题
5.5 百钱买百鸡问题
5.6 判断回文数字
5.7 填数字游戏求解
5.8 新郎和新娘
5.9 爱因斯坦的阶梯问题
5.10 寻找水仙花数
5.11 猴子吃桃问题
5.12 兔子产仔问题
5.13 分解质因数
5.14 常胜将军
5.15 求π的近似值
5.16 魔幻方阵
5.17 移数字游戏
5.18 数字的全排列
5.19 完全数
5.20 亲密数
5.21 数字翻译器
5.22 递归实现数制转换
5.23 谁在说谎
第6章 数学趣题(二)
6.1 连续整数固定和问题
6.2 表示成两个数的平方和
6.3 具有特殊性质的数
6.4 验证角谷猜想
6.5 验证四方定理
6.6 递归法寻找最小值
6.7 寻找同构数
6.8 验证尼科彻斯定理
6.9 三重回文数字
6.10 马克思手稿中的数学题
6.11 渔夫捕鱼问题
6.12 寻找假币
6.13 计算组合数
6.14 递归法求幂
6.15 汉诺塔
6.16 选美比赛
第7章 数据结构趣题
7.1 顺序表的就地逆置
7.2 动态数列排序
7.3 在原表空间进行链表的归并
7.4 约瑟夫环
7.5 二进制/八进制转换器
7.6 回文字符串的判定
7.7 括号匹配
7.8 魔王语言翻译
7.9 动态双向链表的应用
7.10 判断完全二叉树
7.11 动画模拟创建二叉树
7.12 打印符号三角形
7.13 递归函数的非递归求解
7.14 任意长度整数加法
第8章 数值计算问题
8.1 递推化梯形法求解定积分
8.2 求解低阶定积分
8.3 迭代法开平方运算
8.4 牛顿法解方程
8.5 欧拉方法求解微分方程
8.6 改进的欧拉方法求解微分方程
8.7 雅可比迭代公式求解线性方程组
第9章 综合题
9.1 破碎的砝码
9.2 计算24的问题
9.3 马踏棋盘
9.4 0-1背包问题
9.5 八皇后问题求解
9.6 简易文件加密/解密系统
第10章 算法设计与数据结构面试题精粹
10.1 常见的算法设计题
10.2 常见的数据结构题
第11章 ACM程序设计竞赛题目选讲
11.1 奥斯卡奖章
11.2 准备就绪?
11.3 兔子
11.4 阶乘之和
周颖,毕业于电子科技大学。高级程序员、某软件公司的技术总监。擅长C和C++语言,对数据结构和算法有深入的研究。长期从事行业软件设计和团队管理工作,已十年有余。有着丰富的IT架构设计经验和行业咨询经验。负责过多个大型软件项目的开发工作。 杨峰,目前就职于中国石化信息技术培训中心,主要负责ERP系统的底层数据交换业务。有近10年的C语言开发经验。曾经参与过基于内容的图像检索系统、图书馆信息管理系统、基于ARM的嵌入式密码系统和基于VHDL的硬件时钟设备等。出版过两部C语言图书。
《程序员的数学思维修炼(趣味解读)》
《程序员的数学思维修炼(趣味解读)》是一本专门为程序员而写的数学书,介绍了程序设计中常用的数学知识。本书门槛不高,不需要读者精通很多高深的数学知识,只需要读者具备基本的四则运算、乘方等数学基础知识和日常生活中的基本逻辑判断能力即可。本书拒绝枯燥乏味的讲解,而是代之以轻松活泼的风格。书中列举了大量读者都很熟悉,而且非常有趣的数学实例,并结合程序设计的思维和算法加以剖析,可以训练读者的数学思维能力和程序设计能力,进而拓宽读者的视野,增强职场竞争力。
《程序员的数学思维修炼(趣味解读)》共11章,分别介绍了数据的表示、神奇的素数、递归、排列组合、用余数进行数据分组、概率、复利、数理逻辑、推理、几何图形构造、统筹规划等程序设计中常用的数学知识,从而引导读者深入理解编程中的数学方法和思路。本书包含的实例有结绳记事、孪生素数、梅森素数、哥德巴赫猜想、阶乘、汉诺塔、斐波那契数列、乘法原理、加法原理、字符编码、密码长度、日历中的数学、心灵感应魔术、约瑟夫环、智叟分牛、百枚钱币鼓士气、庄家的胜率、中奖概率、用概率方法求π值、复利的威力、对折纸张、舍罕王的赏赐、三段论、选言推理、假言推理、关系推理、花盆摆放、残缺棋盘、丢失的线条、田忌赛马、背包问题等。
《程序员的数学思维修炼(趣味解读)》适合广大程序设计人员及数学爱好者阅读,尤其适合有一定程序设计经验,但还需要进一步加深对程序设计理解的人员阅读。本书对IT求职人员、信息学竞赛和大学生程序设计竞赛等参赛学员也有很好的参考价值。
《妙趣横生的算法(C语言实现)第2版》
《妙趣横生的算法(C语言实现 第2版)》是深受广大读者好评的《妙趣横生的算法(C语言实现)》一书的全新升级版。本书在第1版的基础上对原书内容做了大量的调整和补充,并将书中的实例代码在Visual Studio 2010环境下重新编译通过,以适应当前技术的发展和阅读需求。本书内容涵盖了算法入门的必备基础知识和大量的趣味算法题、面试题和ACM竞赛题等。通过学习本书内容,可以开阔读者的视野,帮助读者理解算法,提高编程兴趣和能力,并提高C语言编程能力,还可以让读者了解IT面试中的常见算法题及编程竞赛中的相关知识。另外,本书提供了5.5小时配套教学视频和实例源代码,以提高读者的学习效率。
本书共11章,分2篇。第1篇为算法基础,包括数据结构基础知识(8个趣题)、常用的查找与排序方法(9个趣题)、常用的算法思想(11个趣题)。第2篇为常用算法实例解析,包括20个编程基本功趣题、39个数学趣题、14个数据结构趣题、7个数值计算趣题、6个综合题、61个算法设计与数据结构面试题、4个ACM程序设计竞赛题目。
本书适合学习算法的人员作为入门教程,也适合有C语言基础的人作为编程实践读物,还可作为有编程经验的程序员查阅相关算法实现和数据结构知识的参考书。另外,本书也可以为那些准备参加IT面试和信息学竞赛的读者提供有益的帮助。
本书赠送的教学视频内容
数据结构专题(36分钟)
查找和排序算法专题(75分钟)
常用算法专题(63分钟)
重点编程实例解析专题(89分钟)
重点面试题解析专题(65分钟)
比价列表