当前位置: 首页 > news >正文

算法学习入门

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

目录

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

什么是算法

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

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

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

为什么要研究算法

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

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

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

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

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

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

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

学习进程

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

参加算法比赛

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

面试算法

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

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

写在最后

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

相关文章:

  • 【SSM】spring核心思想——IOC和DI
  • 自由的程序员应该学会自由地控制空间-----动态内存管理
  • [架构之路-51]:架构师 - 用系统化、结构化思维解决复杂难搞的软件故障问题 - 马克思主义哲学在软件系统中的应用
  • 【面试题】JavaScript数组切片方法有哪些?
  • 【PyTorch深度学习项目实战100例】—— 基于CNN卷积神经网络实现中文手写汉字识别 | 第60例
  • HarmonyOS系统中内核实现UART串口通信方法
  • Selenium4.0+Python三种元素等待方式介绍 及 元素等待封装
  • django梳理
  • 嵌入式软件调试的发展历程
  • PT_连续型随机变量/分布函数/概率密度
  • Python告别pip手动安装模块,实现全自动安装第三方库,彻底解放你的双手
  • 文件目录操作——Linux命令核心
  • Taichi 加速 Python 中图像处理
  • Vue--》MVVM模型在Vue中的使用
  • 迷宫求解(云南大学)
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • 230. Kth Smallest Element in a BST
  • CentOS6 编译安装 redis-3.2.3
  • Spring Boot快速入门(一):Hello Spring Boot
  • Vue2 SSR 的优化之旅
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • 力扣(LeetCode)56
  • 聊一聊前端的监控
  • 马上搞懂 GeoJSON
  • 前端之React实战:创建跨平台的项目架构
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 一些关于Rust在2019年的思考
  • 数据库巡检项
  • ###项目技术发展史
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (1)(1.13) SiK无线电高级配置(五)
  • (12)目标检测_SSD基于pytorch搭建代码
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (翻译)terry crowley: 写给程序员
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (七)Java对象在Hibernate持久化层的状态
  • (一)Linux+Windows下安装ffmpeg
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • .NET MVC之AOP
  • .NET Standard 的管理策略
  • .net 按比例显示图片的缩略图
  • .NET 指南:抽象化实现的基类
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .NET命令行(CLI)常用命令
  • @Autowired @Resource @Qualifier的区别
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • @vue/cli 3.x+引入jQuery
  • @德人合科技——天锐绿盾 | 图纸加密软件有哪些功能呢?
  • [ 常用工具篇 ] AntSword 蚁剑安装及使用详解
  • [AX]AX2012开发新特性-禁止表或者表字段
  • [BZOJ4016][FJOI2014]最短路径树问题
  • [C/C++]数据结构 栈和队列()
  • [flask]http请求//获取请求体数据
  • [GXYCTF2019]禁止套娃