Ⅰ 方法不对,看再多书你都学不会算法
在计算机科学中,算法通常是指一个解决问题的小程序。算法是程序的基本组成部分,如果你想让你的程序能够解决一切问题,你必须懂算法,这就是为什么算法在计算机编程中如此重要的原因。
如果你是一名初学者,你就必须从基础开始,从理解算法背后的基本概念开始,然后自己一个个地实现它们,在本文中,将和大家分享几种最适合初学的算法学习方法,不要再只会死读算法书啦,这样你永远都学不好算法
1、阅读书籍
毋庸置疑,书籍是学习一切知识的最好资源,它不仅能让你详细和准确地了解算法,还能帮助你按照自己的节奏学习,拿一本关于算法的好书,试着理解算法背后的理论概念。之后再去程序中实现算法。如果你失败了,别担心,书就在那里,再看一遍算法,再试着重新理解它,然后在程序里重新实现它。
关于算法的书籍,之前也推荐过很多了,其实算法相关的书籍有很多,经典的就那几本,把它们都啃透了,技术自然更上一层楼,诸如:
2、在线课程
网上有很多很好的课程,比如你可以学习Coursera提供的算法课程。你也可以上Udemy的课程。他们提供了许多来自着名导师的算法课程
此外麻省理工学院(MIT)、哈佛大学(Harvard)和斯坦福大学(Stanford University)的课程也可以看看,他们的许多课程都是提供自学的。
3、视频教程
视频教程是理解和实现特定算法的很好的资源。你可以在一些视频网站上(如Youtube)搜索视频教程,几乎每种算法都有大量的教程。你可以先看一段视频来理解这个算法,然后再实现它。
4、解决问题
用算法解决问题是理解和学习算法的最好方法。如果你用算法来解决实际问题,你会对算法有一个深刻的理解,当你用不同的算法解决不同问题时,你就可以很好的掌握它们,你可以在网上找到许多算法问题。首先,浏览一遍问题描述,并尝试找出解决问题所需的算法。尝试使用不同的算法来解决相同的问题。例如,你可以同时使用BFS和DFS遍历一个图。
你还可以去UVA、A2oJ、SPOJ和Timus这样的在线测评网站刷题
5、编程竞赛
深入了解算法的另一个好方法是参加各种在线竞赛。它要求你在有限的时间内理解问题并实现算法,这意味着你必须在短时间内设计出一个算法解决方案,这将极大地帮助您在实际问题中使用算法。
codeforce、Hackerrank和Topcoder它们是最流行的竞赛编程平台,你可以在上面参加各种竞赛。
6、可视化算法
如果你是那种喜欢用可视化学习的人,那么你可以通过可视化来学习算法。有许多在线算法可视化工具可以帮助你从基础上理解算法。
比如你可以通过Algorithm-Visualizer或VisuAlgo这样的可视化工具。
7、博客站点
可以在internet上阅读关于各种算法的博客文章。有很多关于算法的个人博客,多阅读你可能会发现它们也很有用。
8、在线论坛上提问
如果你在实现算法方面遇到了任何问题,你应该在各种在线论坛上具体询问这个问题,通常会有很多大神愿意帮助你解决这个问题。这样的在线论坛诸如topcode -forum、Quora等。
9、制定学习计划
熟能生巧,要掌握算法的艺术,你必须制定一个学习计划,例如,你可以在一天或一周内解决一个或几个算法。简而言之,无论你做什么,你都必须要有计划,尽量有规律。
10、实践!实践!实践!
实践是检验真理的唯一标准,你实践的越多,就越能理解和学到一些东西,没经过实践的方法去学习算法你是学不会了,就算失败了也没关系,坚持再试一次,没准就成功了
Ⅱ 什么叫算法算法有哪几种表示方法
算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。计算机科学家往往将“算法”一词的含义限定为此类“符号算法”。“算法”概念的初步定义:一个算法是解决一个问题的进程。而并不需要每次都发明一个解决方案。
已知的算法有很多,例如“分治法”、“枚举测试法”、“贪心算法”、“随机算法”等。
(2)算法解决方法扩展阅读
算法中的“分治法”
“分治法”是把一个复杂的问题拆分成两个较为简单的子问题,进而两个子问题又可以分别拆分成另外两个更简单的子问题,以此类推。问题不断被层层拆解。然后,子问题的解被逐层整合,构成了原问题的解。
高德纳曾用过一个邮局分发信件的例子对“分治法”进行了解释:信件根据不同城市区域被分进不同的袋子里;每个邮递员负责投递一个区域的信件,对应每栋楼,将自己负责的信件分装进更小的袋子;每个大楼管理员再将小袋子里的信件分发给对应的公寓。