首页 > 编程语言 >从学算法体会如何更好的学习

从学算法体会如何更好的学习

时间:2022-10-04 10:12:19浏览次数:87  
标签:体会 设计模式 代码 从学 学习 算法 一些 数据结构

一、第一次学习算法

记得第一次学习《数据结构和算法》还是在大学的必修课里,是严蔚敏那一版。

那个版本的算法跟《算法导论》一样,代码使用的是伪代码。

而我们学习的时候,并没有掌握任何一门编程语言。

所以这门课就变成了一门纯理论课。

我是十分重视这门课的,课本也翻了不止一遍,然并卵,看了后面就忘了前面。看完全书全忘光了。

期末考试还是通过一些见不得人的手段勉强及格的。

从我现在的角度来看,当时读课本对知识的收获,大概也就是了解了一些基本的概念,对于算法的精髓,边都没摸到。

总的知识的掌握,估计也就5%

二、第二次学习算法

第二次学习算法已经是毕业多年以后,有一阵工作不是很忙,我边学习C语言,边用C语言实现一些基本的算法。

当时已经开始写算法,当然有一些是从网上抄过来的,网上有一些别人写好的代码。

又从一些教程,比如《数据结构与算法:C语言实现》,还有软考的一些视频、ppt教程,也涉及一些基本的算法

比如数组,链表,堆,二叉树等,更深更复杂一些的,自己就写不出来了。

从现在的角度看,这些对知识的掌握,估计有20%~30%

三、第三次学习算法

第三次的学习算法,大概是自己对python语言的学习有一定程度之后。

用python实现了一遍基本的数据结构和算法,算是对第二次学习的加深。

这一次除了第二次的基本数据结构外,又添加了8种排序算法。那个时候写算法还很慢,8种排序大概需要5天才能写完。

这个阶段已经基本不需要抄别人的算法,都是自己写,已经可以很熟练的实现递归,可能效率不是很高,但都已经是自己的思考。

现在来看,对知识的掌握,大概也就40%

四、第四次学习算法

第四次系统的学习算法是在极客时间订阅了王争老师的教程《数据结构与算法之美》。

王老师算法功力深厚,讲解深入浅出,课程很棒。但这个阶段因为有了娃,时间很紧张。

只是匆匆听了一遍课程,并没有跟着写代码,也没有做随堂练习。

这一遍下来只能算是对算法的整体知识图谱有了更全面的了解,对于一些高层次的算法思想比如分治/回溯/贪心/动态规划有了一些概念上的了解,

但写不出来,也没有深入理解。

对算法的理解,大概有50%

五、第五次学习算法

第五次学习算法,是在学习完王争老师的《设计模式之美》之后。

这门课我自认为学习的还是不错的,而且在实际的项目中也有了运用,实际效果很好。

让我深入体会到设计模式的强大。

这门课学习的时候我是边学边写代码的,每一种设计模式,我都会自己设想一个场景,然后用这个设计模式把它实现。

通过这种边学边写的方式,学完了,也学会了。效果很好。

因此我想复制这种学习模式到算法的学习上来,所以跑到了leetcode开始刷题。

可以说这次的学习是最虐人的,因为自己已经有多年的工作经验,但是对于一些题目,要么没有思路,要么提交多次才能通过。

一天下来只能通过5~6道题目。更深刻的理解到古人所讲“学然后知不足”,

刷了一百道题后,做题速度有所长进,也有一些官方题解没有想到的新奇算法想出来,然后分享出来。

但发现自己写出来能通过的代码是一方面,把自己的思路逻辑清晰的讲解透彻也更难,这应该就是“教然后知困”吧

但也是通过这次教的体验,才发现只有能把这个算法教给别人,自己才算是真正理解了这个算法,

否则如果自己都理不清楚逻辑,还通过了测试,那只能说之前的通过可能只是恰好瞎猫碰到死老鼠罢了。

这次的学习历程才刚刚开始,不敢说自己掌握了多少,但我知道我已经找到门路了。

分享一张从陈皓老师的《左耳听风》复制过来的学习金字塔给大家,希望每个人都有自己的收获。

 

 

 

引用周志明老师的一句话作为结尾:“技术人员的成长是有“捷径”的,做技术不仅要去看、去读、去想、去用,更要去写、去说。”

标签:体会,设计模式,代码,从学,学习,算法,一些,数据结构
From: https://www.cnblogs.com/wangbin2188/p/16753303.html

相关文章

  • 算法
    24.两两交换链表中的节点![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6b52140970264dc68234ba92976a3954~tplv-k3u1fbpfcp-watermark.image?)```/*......
  • 字符串匹配之Sunday算法
    简介Sunday算法是一种字符串匹配算法,相比于KMP算法,它比较简单易学。在有些时候,比如字符串很长的时候,它是比KMP要高效的。核心思想从前往后匹配,匹配失败时关注主串中......
  • Java手写实现链表队列和数组队列【数据结构与算法】
    packagealgorithm;/**@authorAdministrator@date2022-09-1317:50*/publicclassQueueLinked{privatestaticclassNode{Eitem;Nodenext;publicNode(Eitem,N......
  • Java手写实现栈【数据结构与算法】
    packagealgorithm;importjava.util.Arrays;importjava.util.Iterator;/**@authorAdministrator@date2022-09-1216:38数组栈*/publicclassMyArrayStack{//定义......
  • 常见距离算法
    机器学习中有很多的距离计算公式,用于计算数据和数据之间的距离,进而计算相似度或者其他。1.欧式距离(EuclideanDistance)​ 欧式距离是最常见的距离度量方法。小学、初中、......
  • Latex 如何写算法?推荐模板
    之前我已经在​​这篇文章​​总结了现有的算法包的区别。如果有选择苦难症的朋友可以考虑无脑使用以下模板来写算法。\usepackage[noend]{algpseudocode}#noend表示算法......
  • 计算空间物体包围球的两种算法实现
    详细介绍了计算空间包围球的两种算法。1.概述在进行二维空间几何运算的之前,往往会用包围盒进行快速碰撞检测,从而筛掉一些无法碰撞到的可能。而在三......
  • 浙江大学陈越老师《数据结构与算法》课程笔记
    目录1.1什么是数据结构1.1解决问题方法的效率1.2数据结构的定义1.3抽象数据类型1.2什么是算法1.2.1算法指标1.2.2复杂度的渐进表示法1.2.3例子—求最大连续子列和2......
  • AcWing算法提高课 龟速乘(防止由于MOD过大使乘法爆long long)
    在求a*b%MOD的时候,如果MOD>1e10,则即便使用a%MOD*b%MOD,依旧有可能会爆longlong故可以利用和快速幂相似的思想,将乘法按位转化为加法,避免报longlong龟速乘模板:LLSlowM......
  • 数据结构与算法分析——C语言描述(第9章 图论算法)*
    目录9.1若干定义图的表示9.1若干定义一个图(graph)\(G=(V,E)\)由顶点(vertex)的集\(V\)和边(edge)/弧(arc)的集\(E\)组成。每一条边就是一幅点对\((v,w)\),其中\(v,......