算法是 “ 玄学 ” 吗?
很多 程序员 对各种 排序 、搜索、遍历等常用算法了如指掌,但遇到实际问题时还是 束手无策 。耳熟能详的三本算法书 《算法》、《算法导论》、《算法图解》 ,却一本都没读完:
“看了半年的《算法》这本书,才看了几十页”
“4 年了,还是没有啃完《算法导论》”
有的朋友 觉得像人工智能、数据搜索与挖掘这样高薪的工作才用得上算法,觉得算法深不可测 ,只可远观。
这次,我将会用一些通俗的案例解释算法,让算法走下神坛。首先,我主张用 “玩” 的思想来学习算法,“玩算法”就是要能够做到以下三点:
1、对遇到的特殊问题能够自己设计出算法实现(可能是竞赛的题目,也可能是工作中遇到的实际问题);
2、对于原理公开的知名算法,要能将算法原理翻译成具体的算法代码
3、对已有具体实现的算法,要能够设计出合适的数学模型,将算法应用到实际问题中。
要想做到以上三点,除了熟练掌握各种常用的基础算法外,还需要了解算法设计的常用思想模式,掌握将题目转换成数据模型,再进一步用数据结构实现数据模型的一般方法。
如果你觉得学习算法困难,是因为你没有掌握算法的设计模式。 这里我也准备了一份入门测试题,都是与算法相关的基础知识点,每道题下方都有正确答案,大家可以点击查看,希望能通过这份测试题让你看到自己的 欠缺 之处,查缺补漏,学习更有针对性。
1、求最优解的常用算法模式有哪些?(请至少列举两种)
(点击空白处查看内容)
▼
答案:穷举法、贪婪法、动态规划法等,答对两个即可。
2、A 算法的时间复杂度是 O(n2),B 算法的时间复杂度是 O(n),说明 B 算法的运算速度快。(判断题)
(点击空白处查看内容)
▼
答案:错。
3、在 Java 或 C++ 编程语言中,可以直接用 == 来判断两个浮点数相等吗?为什么能(或不能)?
(点击空白处查看内容)
▼
答案:不能,因为浮点数在计算机内的表达有误差,直接用 == 判断两个浮点数是否相等是不安全的。当然,对于能够精确表达的浮点数,比如 0、0.5(1/2)、0.25(1/4)等浮点数,用 == 判等是没有问题的;其他情况,用 == 判断两个浮点数是否相等可能会得到意想不到的结果。
4、无序的一维表查找时间复杂度是什么,有序的一维表查找时间复杂度又是什么?
(点击空白处查看内容)
▼
答案:无序表的查找时间复杂度是 O(n),有序表的查找时间复杂度是 O(logn2)
5、迭代法的三要素是什么?
(点击空白处查看内容)
▼
答案:迭代变量、迭代递推关系和迭代终止条件
6、动态规划的子问题和分治法的子问题在要求上有什么区别?
(点击空白处查看内容)
▼
答案:动态规划的子问题有“无后向性”要求
7、分治法只能用递归方式设计程序实现(判断题)
(点击空白处查看内容)
▼
答案:错
8、Dijkstra 算法是用来求解什么问题的算法,与之类似目的的算法还有哪些?
(点击空白处查看内容)
▼
答案:Dijkstra 算法是求最短路径的算法,与之类似目的的算法还有 Floyd 算法,A* 算法等。
这 8 道测试题均摘自我的《28 天玩转算法训练营》, 同时,以上提到的算法只是本次算法训练营的部分课程内容,推荐大家订阅 02 期算法训练营,学习系统全面的算法知识。
扫码了解算法训练营
▼
当然一个人不可能看几篇文章就能全面掌握各种问题的解决方法,这种能力其实就是 经验 和 方法集 的问题,多练习、多思考,学会总结和归纳,是提高解决实际问题的关键。
在 GitChat 02 期算法训练营中,我讲解的算法实例基本覆盖了各种 算法比赛 中经常出现的题目以及 工作中常见的 一些有趣的算法实例。在算法实现的过程中,还会详细介绍针对各个问题的建模过程,让你在学习之后能 举一反三 ,以后遇到类似的问题,可以自己设计并实现解决问题的算法。
训练营学习方式
图文课程学习+班级群讨论+高强度课后题实战+助教1V1督学+老师解答各种疑难问题,由助教老师全程带班。
训练营学习时间
训练营周期 5月27日-6月23日,正常学习周期为 4 周左右,课程购买后一直可看。
训练营助学奖励
-
开营礼包(内含 20 元课程代金券)
-
全勤奖(99 元助学金返现)
-
优秀学员奖(199 元助学金返现)
训练营报名须知
-
购买后一定记得添加助教-梦梦微信
-
本期报名截止:2019.05.26
-
本期开营日期:2019.05.27
-
本期结营日期:2019.06.23
-
限购名额:200 人
-
训练营课程为图文+社群学习形式
-
训练营课程为虚拟商品,一经付费概不退款,敬请谅解
有任何售前疑问请咨询小助手
扫码加微信 (gitchat2018) 详细了解训练营
参加了算法训练营之后你会发现,算法并非是枯燥、抽象的代码,算法的设计和应用是一件十分有趣的事情,学习之后觉得意犹未尽。 点击 阅读原文 抢座报名,现在报名还能享受优惠价格哦!
以上所述就是小编给大家介绍的《这次,让算法走下神坛!》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Java 跌落神坛,Python 继续夺冠....凭啥?
- 微软中国 CTO:请把 AI 拉下神坛
- 微软中国CTO:请把AI拉下神坛
- 胶囊网络:将CNN推下神坛的“天命之子”
- 「达芬奇计划」:华为云端AI战略揭秘,普惠AI让技术走下神坛
- 通俗易懂--决策树算法、随机森林算法讲解(算法+案例)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
App研发录:架构设计、Crash分析和竞品技术分析
包建强 / 机械工业出版社 / 2015-10-21 / CNY 59.00
本书是作者多年App开发的经验总结,从App架构的角度,重点总结了Android应用开发中常见的实用技巧和疑难问题解决方法,为打造高质量App提供有价值的实践指导,迅速提升应用开发能力和解决疑难问题的能力。本书涉及的问题有:Android基础建设、网络底层框架设计、缓存、网络流量优化、制定编程规范、模块化拆分、Crash异常的捕获与分析、持续集成、代码混淆、App竞品技术分析、项目管理和团队建设等......一起来看看 《App研发录:架构设计、Crash分析和竞品技术分析》 这本书的介绍吧!
CSS 压缩/解压工具
在线压缩/解压 CSS 代码
MD5 加密
MD5 加密工具