问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

(算法)到底应该怎么学?

发布网友 发布时间:2022-10-01 09:49

我来回答

5个回答

热心网友 时间:2024-11-24 01:04

刷与不刷ACM ICPC的人在算法能力上会有巨大差距。
如果真想深入掌握各种算法,还是先刷题吧。刷到一定境界再去看更高级的算法书。
不得不承认现实生活中,一般码农工作对算法能力要求太低了,这一度让人们(包括我)认为算法似乎不那么重要。其实学习算法所锻炼出来的对各种问题敏感的反应和融会贯通能力还是非常重要的。
编程嘛,就是操作数据输出结果
算法和数据结构是配套的,你应该掌握的主要内容应该是:
这个问题用什么算法和数据结构能更快解决
这就要求你对常见的结构和算法了熟于心,你不一定要敲代码,用纸手写流程是更快的方式。
对你不懂的数据结构,你要去搜它主要拿来干嘛的,使用场景是什么。
细节出错是你对编程语言不熟悉才会导致的问题,跟你懂不懂算法没关系,这个你应该多写写练手小程序,背代码是很愚蠢的行为。
其实我觉得你这么迷茫不如实现一下stl的函数好了
我的经验就是去模拟(当然模拟只限于基础的算法)。甚至是手动模拟,比如我之前学深搜,学递归,代码很简单,但是因为涉及到栈,而你的大脑短时间内存储的栈深度只有几层(临时变量越多你大脑能模拟的栈深度就越少),实际上你没办法用大脑去想。比如学习图的深搜,一开始我是不理解的,对递归没办法理解。后来我就在纸上模拟出来,建立好邻接表以后,按照代码步骤一步步纸笔来模拟,慢慢就知道了代码的工作过程。你学习快排也是,当然你背代码也能写出来,但是可能不理解,很快就忘了。《算法导论》书上就有比较细致的执行过程,你手动模拟下partition和quicksort的过程,一开始就用很简单的用例,把整个过程都手动执行一遍,慢慢就了解了。很多算法都有一个循环不变式,你代码如果逻辑正确并且能够维持循环不变式,一般写出来就是正确的。
建议找本《算法》或者《算法导论》这些教材,每学习一个算法就先大致浏览下, 然后细致分析每一步代码的执行过程(纸笔模拟或者代码单步调试),当确认你真正明白之后,尝试不看代码就靠对算法过程的了解和正确的逻辑去自己实现。
当然,我不认为你写出很多算法就是高手了,现在大部分高级语言不需要你重复造轮子,你造出来的质量也远逊于库中那些高手的代码,可以去学习他们代码的实现,比如看看stl源码。真正工程用到的代码与一般算法实现还是有很多改进的。
最重要的不是你会写这些算法了,而是学会了很多思想。比如二分的思想,递归的思想,分治的思想,动态规划,贪心等,以及现实中很多数据结构的抽象等。难的不是学会了算法,而是如何运用这些算法思想去解决问题。

热心网友 时间:2024-11-24 01:05

算法入门要看那几本经典的书,但是进阶的话要看一个人的聪明程度和综合各种学科的知识的能力。说到底遇到新情况你就没有书可以照搬了,这时还是看人聪明不聪明:
我记得大一学校有个什么数学建模班,作为考试入班需要提交一个程序解一大堆应用题中的一个。彼时算法课计算机系还没有教,其他系更不用说。但是还是有各种人物用自发明的各种算法加上自学的C和C++把各种问题都啃下来了。不用任何框架直接C++/COM加3D碰撞检测的DirectX游戏照样有人做出来,还不是计算机系的。我那时觉得已经到我脑力极限的DirectX/OpenGL英文手册在他看来和日漫一样简单

热心网友 时间:2024-11-24 01:05

算法对于程序员来说是比较难的,特别是那些经常写CRUD的工程师,不过算法是程序员的必备技能,学习算法可以从基础的开始(算法跟数据结构是搭配的,很多算法是需要特定数据结构的支持)
基础的数据结构和算法知识,例如:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树;10个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法。
学习算法没啥难得,就是要多练,花时间,从易到难。
推荐一个学习算法的地方:小牛知识库
这个平台算法整理的很详细,从入门算法到动态规划,到机器学习、深度学习算法什么的都有。

热心网友 时间:2024-11-24 01:06

我感觉要先把数学学好

热心网友 时间:2024-11-24 01:06

学算法其实是学思想
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 黑客攻击报案有用吗 循环不变式的介绍 循环不变式的性质 循环不变式的定义 长沙iphone维修点有哪些 iphone长沙维修点有哪些 什么是循环不变式 哈尔滨敬老院或老年公寓电话 北京市昌平区北七家镇奥北对面的养老院电话是多少 滨州敬老院联系电话 为什么安康码显示服务端错误 《夏洛的网》读后感400字 伤感的2021最后一天的说说心情 2021年最后一天心情感言说说 2021年最后一天心情感言经典说说 四年级游北京作文 游圆明园一句话感悟 关于游圆明园的句子 刷了乳胶漆还能贴墙布吗 乳胶漆什么牌子好 买方违约合同应该怎么解除 国防科大公共事业管理是什么 于正自曝《延禧攻略2》已在创作,你是否期待续集的开拍? 长虹电视屏幕不亮? 酒店怎么接旅游团?该怎么去寻找旅游团 人生不是满满的一杯水,而是那还未盛满的半杯水?你是怎么看待的? 工人师傅搬运重物时经常采用的方法,其中利用物理知识有,以滚动代替滑动... 找三个点 砸墙 很省力 物理原理 nt是什么网络语 nt的意思 网络nt是什么意思 网络nt意思简述 考虑循环不变式编写一个程序,求两个正整数的最小公倍数 人生感悟正能量短句 人生感悟正能量经典短句 妊娠糖尿病血糖大于多少需要打胰岛素 空腹 餐后 川味水煮鱼的家常做法 川味水煮鱼的家常做法是什么 糖尿病人血糖多少用胰岛素? 二手苹果5多少钱: 想卖个二手苹果5没任何问题,只有些小磕碰值多少钱,求专业人士解答_百度... 尺寸的基本含义 妊娠期糖尿病患者可以打胰岛素吗?? 我参加2014年上半年全国英语等级一级考试,笔试过了口试没过,笔试成绩... 怀孕八个月餐后两小时血糖10左右用打胰岛素吗 衣服粘上油,怎样可以除掉 飞蛾赴烛成语解释 料酒什么牌子好 料酒如何区分好坏