算法是需要长期积累而熟悉的。
对于计算机软件开发专业的人员来说,算法是极其重要的,熟悉并掌握常用算法,对理解问题、解决问题都是起着至关重要的。
那么,如何做才能更有效的掌握常用算法呢?下面我来谈谈自己,看法。
第一,找到兴趣点,多看。
刚开始学习算法的同学,总感到枯燥乏味,没有什么实际的应用指导,也就没有兴趣去持续深入的学习,逐渐的,学过的什么算法,也忘的一干二净了,更不用说掌握了。
我在学生时代也觉得算法很难,很抽象,一开始还不理解为什么要学习算法。工作几年之后我越来越意识到算法的重要性。分享一下我的经验,希望对你有所启发。
算法有什么用
计算机的本质是存储,计算和传播。这些都是需要资源的,需要磁盘空间,cpu时间,网络带宽。虽然目前的硬件很便宜,带宽也越来越快。但是目前的数据量也越来越大。再加上为了容错,一份数据需要几个备份数据。这样就要增加几倍的数据量。
数据量大了以后我们的存储,cpu和带宽就更显的不足了。所以大数据和分布式系统和传统的系统一样都需要节约资源。
我们在学习算法的时候,除了要知道怎么做,还要深入学习算法分析,计算算法的时间和空间复杂度,就是为了找到更为节约资源的方式。
比如排序,快排的时间复杂度是O(n * logn),而冒泡排序的时间复杂度是O (n*n)。 假如你对100个数排序,每一次操作的时间是1ms:
看书看代码看视频刷题
1.《数据结构和算法》,基础的排序查询,图,树
2.《redis源码》里面有很多优秀的数据结构,简单的链表数组实现出字典,跳跃表,动态字符串,还有哈希算法,极力推荐阅读redis源码!!!
3.去leetcode刷刷递归,动态规划相关算法的题目,总结思想
作为一个曾经的计算机专业毕业生,根据自身近30年相关专业经历,针对你的问题提出如下建议:
1. 学好基础。如果算法基础不过硬,首先还是要找本算法教材,按部就班再学一遍,理解数据结构及相关算法基本思想、基本原理。
2. 多研读优秀算法代码,吸取基思想光芒。
3. 要多加练习。善于把算法用己的代码去实现、去实践。在书写代码、测试代码、完善优化代码中得到能力的升华。
开场白:
你好,我是践行计算机教育刘老师,很高兴你的问题,我一直从业计算机IT软件培训讲师,之前也带过很多学生跟我说这个话,觉得自己学不会开发,感觉很难,其实这些问题,我自己的亲身经历也身同感受。但是我们如何取克制这样的问题呢。
如何学习有效的学校方式学习计算机
首先,我先分享一下我之前学习计算机编程语言的时候的感受,刚开始接触代码一脸懵逼,第一次接触非常的陌生,老师步骤作业完全没有思路,我不知道你是否有这样的感受,我觉得有这样的一个现象是正常的。我们要做的是什么呢,就是了解程序的语法和算法的思路分析,刚开始我们最好在编写程序的时候加上一条条的注释,这样一步一步的分析,这个算法的思路,然后就是多多的动手编写程序,然后一点点的积累,算法不是一上来马上就明白了,是很多知识慢慢的积累,当你遇到同类似的题目,你脑海直接就能想出这道题的算法实现是什么。首先我们要学会慢慢的走路,不要急于求成。当过了一段时间之后,你回头在去看你之前遇到的问题,这个时候你会有一种感受,原来这么容易,因为你见多了题目。了解了算法的本质,我最开始学习算法,最开始都是模仿,什么都理解不到,然后一点点在写程序的过程中,慢慢的剖析。问题就迎刃而解了。
分享冒泡排序算法
对于这道题,我们要去如何分析呢,第一,我们要知道这个算法用来干什么的,排序对吧,我们要去了解冒泡的实现原理,我们是不是应该去了解冒泡的算法规则,然后我们才能编写出程序对吧。接下来看一个冒泡排序算法的图:
从简到难,循序渐进
有一定编程基础的朋友
一定要看看数据结构之类的书籍
然后学习一些经典的算法
多动手
可以坚持做一些算法题目,另外是把数学学好,算法好离不开数学功底。
可能你看算法书的时候,感觉也能明白它的意思,但是一到实际应用就没了方向。如果是这样的话,你就要先明白,理解意思和掌握逻辑是两个层面的境界。如何掌握了算法的底层逻辑和实现逻辑?有个小技巧,就是你学会一个算法后,要对一个计算机小白把算法解释清楚。如果小白听的云里雾里,那说明你一定没掌握。基础算法的底层逻辑都是简单的,算法实现的步骤略有繁琐,但完全可以分步拆解。能做到解释清楚,就是真掌握了。
坚持每天一练,基础靠一点一点积累
参加一次数学建模大赛。