回答前,我们先来举个例子:如何实现“把大象装进冰箱”?
2000年,宋丹丹在小品《钟点工》里说过一个脑筋急转弯,让我颇为印象深刻。
先来看看汪涵表演的丹丹老师的“算法”:
在这个“程序”中,大象、冰箱,是数据,而“如何把大象装进冰箱”,就是这个程序的算法。所以,我们可以理解:程序,由数据和算法有机地结合而成,其中,算法,即“计算方法”,是程序的灵魂。作为程序员修炼的“内功”,算法是计算机科学领域最重要的基石之一。
整体丹丹老师的算法可以细分为多个算法:
算法一:把大象放在冰箱前,把冰箱门打开,把大象装进去。
算法二:把冰箱门打开,把大象放在冰箱门前,然后把大象装进去。
算法三:把大象放在冰箱前,把冰箱门打开对准大象,然后把冰箱向着大象推动直至把大象装进去。
算法四:……
由以上可以看到,实现一种需求,可以设计出多种算法,并且,算法在很大程度上决定了你写出的程序漂不漂亮、巧不巧妙,所以我们学习算法的目的是为了在写程序时能够设计出更优化的方案。
李开复曾经把基础课程比拟为“内功”,把新的语言、技术、标准比拟为“外功”。 整天赶时髦的人最后只懂得招式,没有功力,是不可能成为高手的。真正学懂计算机的人(不只是“编程匠”)都对数学有相当的造诣,既能用科学家的严谨思维来求证,也能用工程师的务实手段来解决问题——而这种思维和手段的最佳演绎就是“算法”。
算法也作为面试中重要的考察手段,为了考察一个人是否聪明,能否出活,是否主动。聪明是高质量出活的关键因素之一,主动是出活的速度和质量的有力保障。
有人也许会说:“今天计算机这么快,算法还重要吗?”其实永远不会有太快的计算机,因为我们总会想出新的应用。虽然在摩尔定律的作用下,计算机的计算能力 每年都在飞快增长,价格也在不断下降。可我们不要忘记,需要处理的信息量更是呈指数级的增长。现在每人每天都会创造出大量数据(照片,视频,语音,文本等 等)。日益先进的纪录和存储手段使我们每个人的信息量都在爆炸式的增长。互联网的信息流量和日志容量也在飞快增长。在科学研究方面,随着研究手段的进步, 数据量更是达到了前所未有的程度。无论是三维图形、海量数据处理、机器学习、语音识别,都需要极大的计算量。在网络时代,越来越多的挑战需要靠卓越的算法来解决。
最近各种社群,课程,都搞得风风火火,但是谈系统设计和架构的偏多,没有太多分享算法的。是因为算法不重要么?恰恰相反,而是因为算法太重要太基础,以至于你会算法,这事都没啥好说好分享的了。
所以现在推荐一个好的公众号很诚心实意的在做,从基础的算法入门,定期分析程序挑战类与面试类算法,分享有趣的源码,重于思想的培养,带你入门算法与程序设计,扎实基本功。千里之行,始于足下。
扫码关注即可获得准备的算法学习大礼包 :包含10G算法和数据结构教程
一步一步带你成为张无忌在内力运用技巧方面的最高绝学,在他浑厚内力支持下所有招式(项目)都一蹴而就。因为这个东西主要问题在于对内力的需求极大,而张无忌(各位)偏偏不缺内力。就这样又有了极其强大的cpu。
按字母顺序浏览:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
→我们致力于为广大网民解决所遇到的各种电脑技术问题 如果您认为本词条还有待完善,请 编辑词条