课程介绍
切记: 1)这是一门容量相对于市面上普通算法课4倍的课程;2)这门课不适合一口气从头学到尾,而适合做为参考教材保存,根据需要选择性学习;3)如果你能把课程所有内容都吃透,那你太无敌了,地球人都怕你!
作为一名服务过百度、中软、GREE等多家国内外上市公司的过来人,李老师告诉你为什么应该关注这门课程:
1. 算法和数据结构是IT技术人员的基本功,非常重要。可以说,算法几乎决定着一个程序员最终能走多远!
2. 算法是好的互联网公司和IT企业笔试、面试必不可少的一环,应用性的技能容易学,但算法却是内功和潜质的体现。所以算法好,对拿到好offer最最重要。
3. 算法本身很枯燥,而《算法的乐趣》立足点上就是要摆脱用枯燥的方式讲算法,用生动有趣的例子带着大家轻松学会20多种重要的算法。更重要的培养对算法的兴趣。
4. 这门课会结合我自己的项目实战经验对《算法的乐趣》书的内容进行扩充完善,比如强化了面试过程中重要的数据结构相关内容。再比如BAT大公司面试中常见的算法和当前比较前沿实用的算法。
5.我个人比较喜欢研究算法,非常乐意和大家交流,互相学习。讲《算法的乐趣》这门课纯粹是兴趣使然,所以不会为了教而教。
6.我个人曾经面过国内外很多不错的公司,我会把面试的一些经验分享给大家,希望对大家有帮助。
对算法感兴趣的童鞋欢迎加QQ群:329266706,一起交流学习,一起升级打怪,纯爱好,无关乎课程!
看完这么多,送你一个彩蛋!>>> 点击领取300元立减优惠码,总价只需199元
阿拉伯数字与中文数字视频讲解:
妖怪与和尚过河问题视频讲解:
算法与历法算法实现部分代码:
非线性方程与牛顿迭代法实现部分代码:
讲师介绍
-
李大明
大讲台金牌讲师 | 北大硕士、前百度工程师
北大硕士,曾服务于百度、GREE、中软等多家优秀企业。数学功底深厚,精通数据结构和算法,在大流量、高并发互联网项目架构及开发方面有很深的造诣。看看这是怎样的一位老师:
1)经常被身边朋友同事请教数据结构和算法,包括百度和中软的技术大牛在内,其本人也以此为乐;
2)考研数学,满分150分的情况下考了147分,最主要是考试过程中还睡了半个多小时;
3)借助深厚的数学功底,即使复杂算法也是一看就通,常见和前沿常用的算法更是手到擒来;
4)一次去某名企面试,面试官一道让无数英雄好汉苦思半小时以上的算法题,此人1分钟思考后就讲得轻松自如,面试官当场拜服;
5)在中软工作过程中,先后辅导多位同事数据结构考研课程,辅导过的人几乎无落榜,被奉为“福将”;
6)谦逊,和学生交流过程中从不摆谱,永远像朋友一样;
7)QQ长期在线,只要不忙就会及时回复响应,不厌其烦的交流。
-
王晓华
《算法的乐趣》图书作者
2005年毕业于华中科技大学,目前在中兴通讯上海研发中心从事光纤接入网通讯设备开发,担任EPON(以太网无源光网络)业务软件开发经理,参与开发的PON设备在全球部署过亿线,为数亿家庭提供宽带接入服务。
业余时间喜欢研究算法和写作博客,最大的乐趣就是用程序解决生活中的问题:
1)为了方便使用Visual Studio 6.0开发软件,曾特意编写并开源了一个tabbar插件;
2)为了文档安全,开发了一个基于layerFSD技术的透明文件加密系统;
3)使用Source Insight软件觉得不习惯,于是以外挂的形式开发了TabSiPlus插件……
算法可以做的事情还有很多,期待我们会有更多发现!
免费视频这么多,为什么还要来大讲台?
智能化
学习任务智能推送
混合式
“图文+视频”混合式课件
答疑快
30分钟问答响应
实战多
3分理论7分实战
包学会
账号长期有效学会为止
课程大纲
算法的基本结构 1、顺序执行 1)打印雇员工资 2)计算太阳的地心 2、循环结构 1)实战操作:杨辉三角 2)实战操作:魔方阵 3、分支和跳转结构 1)实战操作:录入员工工资 算法实现与数据结构 1、线性表 1)线性表的逻辑结构 2)线性表的顺序存储结构 3)线性表的链式存储结构 4)单向链表 5)单向循环链表 6)双向循环链表 2、栈 1)顺序栈 2)链栈 3、队列 1)实战操作 4、循环队列 1)实战操作 5、链队列 1)实战操作 6、树和二叉树 1)树的基本概念 2)树的性质 3)二叉树的存储结构 4)二叉树的遍历 7、哈夫曼树 1)实战操作 8、查找 1)顺序查找 2)分块查找 3)动态查找 4)哈希表及其查找 9、排序 1)直接插入排序 2)折半插入排序 3)希尔排序 4)冒泡排序 5)快速排序 6)简单选择排序 7)堆排序 8)归并排序 10、图 1)无向图的邻接矩阵 2)有向图的邻接矩阵 3)邻接链表法 4)十字链表 5)邻接多重表 11、图的遍历 1)深度优先搜索 2)广度优先搜索 12、最小生成树 1)普里姆(Prim)算法 2)克鲁斯卡尔(Kruskal)算法 数据结构和数学模型与算法的关系 |
1、贪婪法 1)贪婪法的基本思想 2)贪婪法的实例:0-1背包问题 2、分治法 1)分治法的基本思想 2)递归和分治,一对好朋友 3)分治法的例子:大整数、Karatsuba 乘法算法 3、动态规划 1)动态规划的基本思想 2)动态规划的实例:字符串的编辑距离 4、解空间的穷举搜索 1)解空间的定义 2)穷举解空间的策略 3)穷举搜索的例子: Google方程式 |
1、中文数字的特点 1)中文数字的权位和小节 2)中文数字的零 3)中文数字的规则 2、阿拉伯数字转中文数字 1)一个转换示例 2)转换算法设计 3)算法实现 4)中文大写数字 3、中文数字转阿拉伯数字 1)转换的基本方法 2)算法实现 4、数字转换的测试用例 1)实战操作 |
1、问题与求解思路 2、建立数学模型 1)状态的数学模型与状态树 2)倒水动作的数学模型 3、搜索算法 1)状态树的遍历 2)剪枝和重复状态判断 4、实战:算法实现 |
1、问题与求解思路 2、建立数学模型 1)状态的数学模型与状态树 2) 过河动作的数学模型 3、 搜索算法 1) 状态树的遍历 2) 剪枝和重复状态判断 4、实战: 算法实现 |
1、稳定匹配问题 1)什么是稳定匹配 2) Gale-Shapley 算法原理 2、 Gale-Shapley 算法的应用实例 1) 实战:Gale-Shapley 的算法实现 2) 改进优化:空间换时间 3、有多少稳定匹配 1) 穷举所有的完美匹配 2) 不稳定因素的判断算法 3)穷举的结果 4、二部图与二分匹配 1) 最大匹配与匈牙利算法 2) 带权匹配与 Kuhn-Munkres算法 |
1、 AOV 网和 AOE 网 2、 拓扑排序 1) 拓扑排序的基本过程 2) 按照活动开始时间排序 3、关键路径算法 1) 什么是关键路径 2) 计算关键路径的算法 |
1、 RLE 压缩算法 1) 连续重复数据的处理 2) 连续非重复数据的处理 3)实战: 算法实现 2、RLE 与 PCX 图像文件格式 1) PCX 图像文件格式 2) PCX_RLE 算法 3) 256 色 PCX 文件的解码和显示 |
1、 格里历(公历)生成算法 1) 格里历的历法规则 2) 今天星期几 3) 生成日历的算法 4) 日历变更那点事儿 2、 二十四节气的天文学计算 1) 二十四节气的起源 2) 二十四节气的天文学定义 3) VSOP-82/87 行星理论 4) 误差修正——章动 5) 误差修正——光行差 6) 用牛顿迭代法计算二十四节气 3、 农历朔日(新月)的天文学计算 1) 日月合朔的天文学定义 2) ELP-2000/82 月球理论 3) 误差修正——地球轨道离心率修正 4) 误差修正——黄经摄动 5) 月球地心视黄经和最后的修正——地球章动 6) 用牛顿迭代法计算日月合朔 4、 农历的生成算法 1) 中国农历的起源与历法规则 2) 中国农历的推算 3) 一个简单的“年历” |
1、 曲线拟合 1) 曲线拟合的定义 2) 简单线性数据拟合的例子 2、 最小二乘法曲线拟合 1) 最小二乘法原理 2) 高斯消元法求解方程组 3)实战: 最小二乘法解决“速度与加速度” 3、 三次样条曲线拟合 1) 插值函数 2) 样条函数的定义 3) 边界条件 4) 推导三次样条函数 5) 追赶法求解方程组 6) 实战:三次样条曲线拟合算法实现 7) 实战:三次样条曲线拟合的效果 |
1、 非线性方程求解的常用方法 1) 公式法 2) 二分逼近法 2、 牛顿迭代法的数学原理 3、用牛顿迭代法求解非线性方程 1)导函数的求解与近似公式 2)实战: 算法实现 |
1、 计算几何的基本算法 1) 点与矩形的关系 2) 点与圆的关系 3) 矢量的基础知识 4) 点与直线的关系 5) 直线与直线的关系 6) 点与多边形的关系 2、 直线生成算法 1) 什么是光栅图形扫描转换 2) 数值微分法 3) Bresenham 算法 4) 对称直线生成算法 5) 两步算法 6) 其他直线生成算法 3、圆生成算法 1) 圆的八分对称性 2) 中点画圆法 3) 改进的中点画圆法——Bresenham 算法 4) 正负判定画圆法 4、 椭圆生成算法 1) 中点画椭圆法 2) Bresenham 椭圆算法 5、 多边形区域填充算法 1) 种子填充算法 2) 扫描线填充算法 3) 改进的扫描线填充算法 4) 边界标志填充算法 |
1、实时频谱显示的原理 2、 离散傅里叶变换 1) 什么是傅里叶变换 2) 傅里叶变换原理 3)实战: 快速傅里叶变换算法的实现 3、 傅里叶变换与音频播放的实时频谱显示 1) 频域数值的特点分析 2) 从音频数据到功率频谱 3) 音频播放时实时频谱显示的例子 4、 破解电话号码的小把戏 1) 拨号音的频谱分析 2) 根据频谱数据反推电话号码 5、 离散傅里叶逆变换 1) 快速傅里叶逆变换的推导 2) 实战:快速傅里叶逆变换的算法实现 6、 利用傅里叶变换实现频域均衡器 1) 频域均衡器的实现原理 2) 频域信号的增益与衰减 3)实战: 均衡器的实现——仿 Foobar的 18 段均衡器 |
1、 遗传算法的原理 1) 遗传算法的基本概念 2) 遗传算法的处理流程 2、 遗传算法求解 0-1 背包问题 1) 基因编码和种群初始化 2) 适应度函数 3) 选择算子设计与轮盘赌算法 4) 交叉算子设计 5) 变异算子设计 |
1、 哦,溢出了,出洋相的计算器程序 2、 大整数计算的原理 1) 大整数加法 2)大整数减法 3)大整数乘法 4)大整数除法与模 5) 大整数乘方运算 3、 大整数类的使用 1)与 Windows 的计算器程序一决高下 2) 最大公约数和最小公倍数 3) 用扩展欧几里得算法求模的逆元 |
1、 RSA 算法的开胃菜 1)将模幂运算转化为模乘运算 2) 模乘运算与蒙哥马利算法 3) 模幂算法 4) 素数检验与米勒—拉宾算法 2、 RSA 算法原理 1) RSA 算法的数学理论 2)加密和解密算法 3) RSA 算法的安全性 3、 数据块分组加密 1) 字节流与大整数的转换 2)PCKS 与 OAEP 加密填充模式 3)实战: 数据加密算法实现 4)实战: 数据解密算法实现 4、 RSA 签名与身份验证 1) RSASSA-PKCS 与 RSASSAPSS签名填充模式 2)实战:签名算法实现 3)实战: 验证签名算法实现 |
1、数独游戏的规则与技巧 1) 数独游戏的规则 2) 数独游戏的常用技巧 2、 计算机求解数独问题 1) 建立问题的数学模型 2) 实战:算法实现 3) 与传统穷举方法的结果对比 3、 关于数独的趣味话题 1) 数独游戏有多少终盘 2) 史上最难的数独游戏 |
1、华容道游戏介绍 2、 自动求解的算法原理 1) 定义棋盘的局面 2) 算法思路 3、 自动求解的算法实现 1) 棋局状态与 Zobrist 哈希算法 2) 重复棋局和左右镜像的处理 3) 正确结果的判断条件 4) 武将棋子的移动 5) 棋局的搜索算法 |
1、 寻径算法演示程序 2、Dijkstra 算法 1) Dijkstra 算法原理 2) 实战:Dijkstra 算法实现 3) Dijkstra 算法演示程序 3、 带启发的搜索算法——A*算法 1)A*算法原理 2)常用的距离评估函数 3) 实战:A*算法实现 |
1、 俄罗斯方块游戏规则 2、 俄罗斯方块游戏人工智能的算法原理 1)影响评价结果的因素 2)常用的俄罗斯方块游戏人工智能算法 3) Pierre Dellacherie 评估算法 3、 Pierre Dellacherie 算法实现 1)基本数学模型和数据结构定义 2)实战: 算法实现 |