学习算法,你需要掌握这些编程基础(包含JAVA和C++)短短的路走走停停

小伙伴们好呀!可爱的小编又来了。最近放寒假了,相信各位小伙伴已经做好满满的计划打算在寒假实现弯道超车。

这么美好的一段长假,不用来学习是在是太暴殄天物啦!

加上经常有小伙伴来问小编,学习算法需要掌握哪些编程语言?代码怎么学啊好难啊?是学Python好还是matlab好?

这些问题实在没有办法一一回答,所以今天我们就来聊一聊,学习算法需要掌握什么样的编程知识吧~

值得注意的是,本文面向的对象是算法的学习群体,包括公众号上的启发式算法和精确式算法。因此编程上的知识我们只是强调“够用”即可,这样才能将更多精力放在算法的设计以及优化上来。

基础知识核心原则是“有用”,学习完基础后应能快速上手写一些简单的算法。学习知识参照知乎上@沈世钧给出的路线图:

在学习java的过程中,网上有很多可参考的视频,大家动手搜集一下即可。而关于书籍,确实有很多,但同时也很杂,在这里小编推荐一本《Java核心技术卷I》,一本书吃透足以。

在学完基础以后,可以尝试自己动手做一个小项目巩固一下编程能力,同时把握比较大型的程序开发。****可以做一个小游戏之类的,在这里推荐一下小编此前做的一个小游戏:

不过该程序的代码框架可能不是那么漂亮,有兴趣的小伙伴可以重构一下。

注意到C++我是放在java后面的,因为说实话对新手而言C++要比Java难上一点。C++内容实在是太多太多太多了……网上曾流传过一个21天精通C++的秘籍:

因此建议可以先学习C++基础,和java一样,学完基础后续内容有需要再查询即可。

首先是C的基础部分:数据类型、变量、内存布局、指针基础;字符串、一维数组、二维数组;一级指针,二级指针,指针数组和数组指针;结构体、文件的使用等。

然后是C++部分:面向对象编程思想;类的封装,构造和析构、静态成员、对象管理;类的构造(有参构造函数、无参构造、拷贝构造、默认构造函数)和析构;对象动态管理、友元函数、友元类、操作符重载;

类对象的动态管理(new/delete);友元函数和友元类;运算符重载;类的继承、多继承及其二义性、虚继承;多态;虚函数、纯虚函数、抽象类(面向抽象类编程思想案例);函数模板、类模板,模板的继承;

C++类型转换;C++输入输出流(标准I/O文件I/O字符流I/O);C++异常处理(异常机制、异常类型、异常变量、异常层次结构、标准异常库)。

学完了这些基础,我相信你已经成仙了,嗯没错!然后可以在写一个小游戏加强一下,比如小编此前写的一个AI贪吃蛇的小游戏:

当然该程序也不是那么完美,有兴趣的小伙伴依然可以重构一下。

数据结构的重要性不言而喻,这是所有编程语言中最应该学习的部分,程序组成的基础之一,更是算法不可或缺的内容。

包括:顺序存储、链式存储、循环链表;****双向链表、栈(顺序和链式)、队列(顺序和链式);栈的应用、树基本概念及遍历、二叉树;排序算法、并归算法、选择、插入、快速、希尔等。

当然,这里推荐一本程杰的《大话数据结构》,虽然这本书被网上很多人吐槽错漏百出。

但就从小编的视角而言,这本书对新手朋友还是非常友好的,起码是还能学下去的。有基础的同学也可以去看严奶奶的数据结构,不过这个确实很枯燥。

什么是IDE?就是一个集成开发环境,在上面你可以随心所欲coding,因此配置一个好的开发环境还是蛮重要的。

对于Java而言,最出名的就是eclipse了,eclipse最大的优点就是免费(以后不知道)。当然也有很多小伙伴在用IntelliJIDEA,这个东西是收费的,用起来也顺手得多,不过小编还未使用过哈~看大家喜好吧。

对于C++,可以选择Windows平台的VC系列:比如VisualStudio2013,VisualStudio2015,VisualStudio2017,VisualStudio2019。现在VisualStudio有社区版也就是免费版了,说是宇宙最强IDE也不为过,调试功能真是太强大了。我又想起当年做项目写代码调bug的种种情境,真让人泪目。

另外还有一些高级编辑器可以选择Notepad++,EditPlus,vscode等。当然,这都是一个coder的标配啦。

有了上面的编程基础,你已经能应对大部分的算法场景了,接着就可以开始学习一些常用的算法。之后就可以上手撸项目撸论文了。学习内容参考:

关于为什么选择C++和java,而不是Python或者matlab,小编已经解释很多遍了。那只学C++或者java一门可以吗?小编之所以建议两手抓,是因为C++和java都有着非常显著的优点。

对于C++而言,速度相当快,快到你怀疑人生。可能此时会有读者有疑问,小编骗人,有时候明明感觉C++慢的离谱。那是因为你IDE的编译模式用的是debug,编译也没有开优化之类的。

比如在visualstudio中,选择release模式:

优化选项选择速度优先:

再比如在devC++选择:

然后你会发现程序快了N倍不止。

对于java而言,最大的优点是兼顾速度和易用性。速度总体上和C++是一个量级的,但终究还是比不过变态的C++。

但java用起来非常方便,比如调用cplex,只需要导入一个jar包配置好dll就可以随心所欲了。而C++又要导入头了,又要链接库了,对小白而言简直是噩梦,比如:

而且java一个类一个文件,不像C++一个类有一个头文件一个CPP文件我真是头大。对于java和C++小编都用来开发过超一万行代码的大型算法,所以对他们之间的优缺点算得上深有体会的,也绝不是空口无凭瞎比比哦。

最后,值得注意的是C++和java的内存管理方式等区别,深浅拷贝等概念要熟悉,不然真的会疯掉的(gotcrazy!)。

最后的最后,祝大家在新的一年学有所成****也祝小编好运多多,心想事成,嘿嘿!

THE END
1.学好算法,真的需要智商吗?讲讲这些年小灰自己学习算法的一些感悟吧。 1、算法不是纯粹拼智商的,智商高,就一定很厉害,不够聪明,就一定不行。算法是一种技能,是可以通过科学合理的方式训练出来的能力。 2、学算法,刷题蛮干是不行的,需要遵循科学的方法,算法训练是一个系统工程,需要循序渐进,太过于急功近利,反而容易因做不出难题而产生挫https://blog.csdn.net/bjweimengshu/article/details/102713995
2.算法需要学什么编程?Worktile社区实践和练习:最重要的是实践和练习。通过解决实际问题和练习算法题,你可以巩固所学的知识,并提高自己的编程能力和算法水平。可以通过参加编程竞赛、完成编程项目、刷算法题等方式进行实践和练习。 总之,学习算法需要掌握编程语言、数据结构和算法、算法思维、编程技巧,并通过实践和练习来提高自己的编程和算法能力。只有掌握https://worktile.com/kb/ask/2030579.html
3.超级干货:到底该如何学习算法?但是对大多数本科同学,尤其是第一次接触算法的同学,《算法导论》实在不是一个好的教材。但很可惜,很多同学在学习中有上面的两个毛病,既过度路径依赖,别人说《算法导论》好,学习算法要走学《算法导论》这个路径,自己就不探索其他更适合自己的学习路径了,一头扎进《算法导论》里;同时还“完美主义”的倾向,对于《https://baijiahao.baidu.com/s?id=1629846079532222044&wfr=spider&for=pc
4.算法工程师要学什么常见问题算法工程师必备七大技能:数据结构和算法编程语言数学基础算法设计与分析分布式系统机器学习和深度学习软件工程实践,助力解决计算机科学和工业中的复杂问题。 算法工程师必修技能 算法工程师是计算机科学领域的专业人员,负责设计、分析和实现高效算法来解决计算问题。要成为一名合格的算法工程师,需要掌握以下核心技能: 1. 数据https://m.php.cn/faq/816502.html
5.如何高效学习算法?学习完数学知识与计算机汇编语言基础之后,即可入门算法学习。作为算法工程师,首先需要学习机器学习的相关知识,其次深度学习作为机器学习的子集,也是现在的算法工程师绕不开的一个子领域。 学习相关算法理论知识后需学习框架。框架指的是深度学习模型的框架,目前已有不少框架,除了常用的TensorFlow、Pytorch之外,还有Keras、MXhttps://zhuanlan.zhihu.com/p/354011845
6.学习算法导论需要什么数学基础或者其他的基础–PingCode学习算法导论主要需要的数学基础或其他基础包括逻辑思维能力、离散数学、数据结构基础、计算机编程能力、概率论与统计、线性代数。其中,离散数学是非常关键的基础,因为它为算法中使用到的数学证明、图论、组合数学等提供了基本工具和理论基础。离散数学涵盖了集合论、图论、数理逻辑等诸多领域,这些都是理解和设计算法不可或https://docs.pingcode.com/ask/200825.html
7.什么是数据结构?什么是算法?怎么学习数据结构与算法?什么是算法?怎么学习数据结构与算法? 01 前言 学习算法,我们不需要死记硬背那些冗长复杂的背景知识、底层原理、指令语法……需要做的是领悟算法思想、理解算法对内存空间和性能的影响,以及开动脑筋去寻求解决问题的最佳方案。相比编程领域的其他技术,算法更纯粹,更接近数学,也更具有趣味性。https://maimai.cn/article/detail?fid=1744039689&efid=u2sSJyH6RePBrCh7o1dCfA
8.图分析与学习算法自动驾驶技术……这两位人大学子,获奖降低大规模图分析与学习算法的复杂度 创造自动驾驶技术多任务通用模型 …… 每一项科研成果的背后 都是无数个日夜的辛苦与坚持 近日,中国人民大学信息学院2019级直博生王涵之、2020届硕士毕业生丁明宇与来自香港大学、清华大学、上海交通大学、南京大学、斯坦福大学、华盛顿大学、加州大学洛杉矶分校的8名学子一同获得了第https://t.m.youth.cn/transfer/index/url/tech.youth.cn/wzlb/202201/t20220129_13411740.htm
9.浅谈机器学习需要的了解的十大算法python这篇文章主要介绍了浅谈机器学习需要的了解的十大算法,具有一定借鉴价值,需要的朋友可以参考下。 毫无疑问,近些年机器学习和人工智能领域受到了越来越多的关注。随着大数据成为当下工业界最火爆的技术趋势,机器学习也借助大数据在预测和推荐方面取得了惊人的成绩。比较有名的机器学习案例包括Netflix根据用户历史浏览行为给用户https://www.jb51.net/article/130690.htm
10.轻松看懂机器学习十大常用算法西南石油大学轻松看懂机器学习十大常用算法 通过本篇文章大家可以对ML的常用算法形成常识性的认识。没有代码,没有复杂的理论推导,仅是图解,介绍这些算法是什么以及如何应用(例子主要是分类问题)。以后有机会再对单个算法做深入地解析。 一、决策树 二、随机森林算法 三、逻辑回归https://www.swpu.edu.cn/eelab/info/1090/2296.htm
11.从0开始掌握一门算法,需要花多少时间?没有人会否认算法的重要性。 李开复反复强调过很多次,算法是计算机科学中最重要的基石之一;谷歌也多次呼吁,算法统治世界;在业务中也常常会遇到,三维建模、数据处理、机器学习、NLP技术,无不需要算法来支持…… 可是,为什么身边的很多小伙伴就是提不起对算法学习的兴趣呢? https://dy.163.com/v2/article/detail/ECV11K8J0511D3QS.html
12.人工智能在美术领域的运用美术Ai需要学什么内容? 1. 美术基础:包括构图、色彩、光影等。 2. 编程技术:美术AI需要通过编程技术实现,因此需要掌握相关的编程技术,如Python、C++等。 3. 机器学习算法:美术AI的实现需要运用机器学习算法,如神经网络、卷积神经网络等,因此需要掌握相关的算法知识。 https://www.hxsd.com/content/31603/
13.初学机器学习?推荐从这十大算法入手机器学习算法的研究已经得到了广泛的关注。发表在《哈佛商业评论》上的文章称“数据科学家”是“二十一世纪最性感的职业“。所以,对于那些刚刚踏入机器学习领域的人们,我们决定重写我们非常受欢迎的“金牌”博文《每个工程师都需要知道的十个机器学习算法》。简而言之,这篇文章是面向初学者的。 https://36kr.com/p/1721961660417
14.机器学习基础Python数据预处理:彻底理解标准化和归一化哪些机器学习算法需要标准化和归一化 1)需要使用梯度下降和计算距离的模型要做归一化,因为不做归一化会使收敛的路径程z字型下降,导致收敛路径太慢,而且不容易找到最优解,归一化之后加快了梯度下降求最优解的速度,并有可能提高精度。比如说线性回归、逻辑回归、adaboost、xgboost、GBDT、SVM、NeuralNetwork等。需要计算https://cloud.tencent.com/developer/article/1667682
15.统计学习方法(豆瓣)—— 引自章节:第一篇 监督学习 算法2.2 (感知机学习算法的对偶形式) (3) 如果 y_i(\sum_{j=1}^N \alpha_j y_j x_j \dot x_i+b) \le 0, \alpha_i \leftarrow \alpha_i+\eta b \leftarrow b + \eta y_i (查看原文) https://book.douban.com/subject/10590856/
16.算法工程师,到底要学些什么?算法工程师可以说简单也可以说复杂,主要在于你想做到什么地步。一个优秀的算法工程师可以处理很多深层次的东西,而一个经验不足的算法工程师可能就只会使用工具包来解决问题。 算法工程师需要掌握的技能和知识点是非常广泛的,不仅仅包含算法和数据结构,还包括机器学习、深度学https://mp.weixin.qq.com/s?__biz=MzU2NjU3OTc5NA==&mid=2247573272&idx=1&sn=ab6406176511fdaafbaea44623343e6b&chksm=fca9d825cbde5133aaae4ee88b4792247f197ea9b01b90ee4638e84107951611ec92067000d7&scene=27
17.科学网—[转载]转自:数据标准化/归一化normalization数据需要归一化的机器学习算法 需要归一化的模型: 有些模型在各个维度进行不均匀伸缩后,最优解与原来不等价,例如SVM(距离分界面远的也拉近了,支持向量变多?)。对于这样的模型,除非本来各维数据的分布范围就比较接近,否则必须进行标准化,以免模型参数被分布范围较大或较小的数据dominate。 https://blog.sciencenet.cn/blog-601186-1228314.html
18.《常用算法之智能计算(三)》:机器学习计算在给出机器学习计算各种算法之前,最好是先研究一下什么是机器学习和如何对机器学习进行分类,才能更好的理解和掌握一些具体的机器学习算法并将其用于实际问题的计算和处理。 学习是人类具有的一种重要智能行为,但究竟什么是学习,长期以来却众说纷纭。社会学家、逻辑学家和心理学家都各有自己不同的看法和说法。比如,http://www.kepu.net/blog/zhangjianzhong/201903/t20190327_475625.html
19.机器学习算法工程师需要掌握的技能讲义链接:[Review of Probability Theory](http://ai-coder.com/batbus/pdf/cs229-prob.pdf) ###2.3 凸优化 在许多机器学习算法中,我们最终是求一个目标函数的最大值或最小值,很多时候这种问题最终归咎为目标函数的优化问题,实质是一种凸优化问题,所以读者需要掌握一些凸优化问题的基础知识。 讲义链接:[Convexhttps://www.jianshu.com/p/5a89b7d68b2a