算法是 “ 玄学 ” 吗?
很多 程序员 对各种 排序 、搜索、遍历等常用算法了如指掌,但遇到实际问题时还是 束手无策 。耳熟能详的三本算法书 《算法》、《算法导论》、《算法图解》 ,却一本都没读完:
“看了半年的《算法》这本书,才看了几十页”
“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让技术走下神坛
- 通俗易懂--决策树算法、随机森林算法讲解(算法+案例)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
C++程序设计原理与实践
(美)Bjarne Stroustrup / 王刚 等 / 机械工业出版社 / 2010.7 / 108.00元
本书是经典程序设计思想与C++开发实践的完美结合,是C++之父回归校园后对C++编程原理和技巧的全新阐述。书中全面地介绍了程序设计基本原理,包括基本概念、设计和编程技术、语言特性以及标准库等,教你学会如何编写具有输入、输出、计算以及简单图形显示等功能的程序。此外,本书通过对C++思想和历史的讨论、对经典实例(如矩阵运算、文本处理、测试以及嵌入式系统程序设计)的展示,以及对C语言的简单描述,为你呈现......一起来看看 《C++程序设计原理与实践》 这本书的介绍吧!