算法学习入门

14天阅读挑战赛
*努力是为了不平庸~
算法学习有些时候是枯燥的,这一次,让我们先人一步,趣学算法!欢迎记录下你的那些努力时刻(算法学习知识点/算法题解/遇到的算法bug/等等),在分享的同时加深对于算法的理解,同时吸收他人的奇思妙想,一起见证技术er的成长

目录

      • 什么是算法
      • 为什么要研究算法
      • 学习进程
      • 参加算法比赛
      • 面试算法
      • 写在最后

什么是算法

简单的说,算法就是:解决问题的手段,并且是批量化解决问题的手段。

比如,我们想要从成都去北京,起点就是成都,终点就是北京。如何去?我们就可以称为算法。

因此选择不同的算法,那么虽然终点都是一样,但是性能以及效率就根据算法的优劣而决定的。因此,我们需要选择最优的算法,来实现我们的问题需求,来解决生活中的一些实际问题。那我们该如何进行算法的学习呢?

为什么要研究算法

算法是计算机科学的一个分支。它是计算机科学的核心。作为计算机专业人士,无论从实践的角度,还是从理论的角度,学习算法是必需的。从实践的角度,学习算法有助于我们解决开发实践过程中遇到的问题。此外,还能帮助设计新算法,提高算法效率。从理论的角度,算法是计算机科学的基石。
尽管计算机可以运行的很快(普通cpu的执行速度也可达2GHz,即每秒执行2亿次),但它不是无限快。存储器也许是廉价的,但它不是免费的。所以计算时间是一种有效资源,存储空间也一样。所以,研究算法仍有必要。
算法是技术革新的推动力。算法在现代的技术革新中扮演了一个关键的角色。最显而易见的一个例子是搜索引擎使用一系列的算法高效地计算与特定搜索项相关联的各个Web页面的出现频率。

这种算法最有名的例子是Google当前所使用的网页排名(PageRank)算法。事实上,在美国白宫2010年12月的一个报告中,总统的科学技术顾问作了如下的描述:

“每个人都知道摩尔定律,它是Intel的共同创立者Gordon Moore于1965年所作的一个预测:集成电路中的半导体密度每过一到两年就会扩大一倍……在许多领域,由于算法的改进所获得的性能提升甚至远远超过由于处理器速度的急剧增加所带来的性能提升。”

算法会对其他科学产生影射。虽说这个话题超出了本文的范围,但算法就像一面“镜子”一样,越来越多地用于对计算机科学技术之外的过程进行影射。例如,对量子计算的研究为量子力学提供了一种新的计算视角。经济市场中的价格波动也可以形象地看作一种算法过程。

甚至,技术革新本身也可以看作一种令人吃惊的有效搜索算法。

学习算法有益于思维。当我还是一名学生时,我最喜欢的课程始终是那些具有挑战性的课程。当我艰苦地征服这些课程时,我甚至能够感觉到自己的智商比刚开始学习这些课程时提高了几个点。我希望本文也能够为读者提供类似的体验。

算法很有趣!最后,我希望读者在读完本文后认为算法的设计和分析是件简单而愉快的事情。这并非易事,因为它需要把精确和创新这两个特征罕见地结合在一起。它常常会给我们带来挫折,但有时会让我们深深入迷。别忘了,当我们还是小孩子时,就已经开始学习算法了。

学习进程

首先要掌握八大排序
算法学习入门_第1张图片
在此基础上进一步进行更高深的算法,如dfs,bfs,kmp算法等,以及贪心算法,动态规划,回溯算法等一系列算法,依靠多刷题,牢记模板来提高自己。
算法涵盖的内容非常广泛,包含了我们学过和经常听到的经典算法(如各种排序、查找、hash、基础树算法、基础图算法等),针对特定问题的算法(贪婪、分治、动态规划、随机化、回溯算法、图论、最优化问题、最小生成树、单源路径最短、近似算法等)。

参加算法比赛

前两步你都坚持下来并认真的去做了,那么普通难度的算法对你来说已经没有什么挑战了。这时候你就可以去参加各种算法比赛了。比如蓝桥杯,ACM,LeetCode周赛等等。这些比赛不仅含金量高,而且往往有丰厚的奖金。如果你能在 ACM 上拿到名次,国内的大厂基本就对你敞开大门。
算法学习入门_第2张图片

面试算法

在讲算法之前咱们先几句话聊聊面试,这是大家从学校走向社会的重要一步。校招和社招的面试,一般来说有2-3轮技术面试和1轮HR面试。技术面试可能现场也可能电话,HR面试有些公司还不一定有,这种情况就是三轮技术面,当然可能有的公司面试跟上面说的不太一样,但正常来说是这样的。

对于技术面试来说,基本可以这样讲:技术面试=基础知识和业务逻辑面试+算法面试。所谓基础知识和业务逻辑面试,就是对你应聘岗位进行相关知识的考察,通俗地讲就是看你有没有干这份工作的专业能力。比如你要应聘前端岗位,那js、css、html和 jQuery的一些问题肯定会问。第一步如果你过了的话,那就来到了算法面试,通常会以代码的形式考察,很少会单讲算法。

写在最后

这世界并不是非黑即白,不是说你不会算法就无法成为大神,就无法赚到钱。 一定要认清自己的能力边界在哪里。就像我自身,我知道自己很难把数学学好,而学算法一定是要把数学学透。 不然你永远只知招式,不得要领。 而我就是因为这点,在我研究算法如何学习并坚持一段时间之后,我就逐渐放弃学算法。 这条路对我来说是没有任何结果的,就像抖音上那么多漂亮的小姐姐一样: 臭弟弟,别爱我,因为没有结果。

你可能感兴趣的:(算法,算法,学习,深度优先)