【数据结构与算法】应该是大学计算机专业必修的一门课,为什么这门课会被列入到必修课的行列当中呢?因为对于每一个程序员来说,在以后的工作中不免要面对一些复杂的业务逻辑,同时要写对应的代码来实现这个复杂的业务。当然了,有很多种方式都可以实现同一个业务逻辑,但每种方式的代码运行效率可能不一样,我们接下来通过一个简单的例子感受一下。
例子: 假如你们班级里有一万个人,并且每个人的姓名和身份信息都存储在一个数据库中。有一天,老师突然要求你用代码实现这样一个逻辑——去这个数据库中寻找 李四
的身份信息,并输出。
在面对这样一个业务逻辑时,我们首先就会想到,对整个数据库的数据进行一一遍历,直到找到 李四
,就进行输出。这是最简单也是最麻烦的方法,如果 李四
的信息在数据库的最后一条,那么就要查找数据10000次,那么代码运行效率肯定会低。
那么另一种能提高代码运行效率的方式你们应该也能轻易地想到,那就是先对整个数据库的学生数据按姓的开头拼音进行排列,然后再进行查找数据。假设这个班里姓的开头拼音为L的只有100个人,那么此时只需要对这100个人进行查找,就算 李四
的信息在第100条,那最多也就是查找100次,相比上一种方法要查找10000次,效率提高了很多。
这就是数据结构与算法的最简单的例子。
- 公众号:前端印象
- 不定时有送书活动,记得关注~
- 关注后回复对应文字领取:【面试题】、【前端必看电子书】、【数据结构与算法完整代码】、【前端技术交流群】
数据结构与算法——起始篇
- 一、引言
- 二、学习【数据结构与算法】的原因
- (1)锻炼思维以及问题处理能力
- (2)可以优化代码运行效率
- (3)【数据结构与算法】是进大厂必备的基础知识
- 三、【数据结构与算法】的学习方法
- (1)不要盲目刷题
- (2)规划学习路线
- 四、结束语
一、引言
首先我是非计算机专业的,所以之前并没有上过【数据结构与算法】的必修课,所有代码相关的都是自学的,从python爬虫慢慢转到web前端来的,无论这两者哪个都是会面对一些复杂的业务逻辑的。比如python爬虫,爬取到很多很多的数据以后,我们需要从中获取自己想要的数据,这时候就要进行数据的筛选;web前端在拿到后端传过来的大量数据以后,也需要从中筛选出一定的数据,再渲染到页面上。
二、学习【数据结构与算法】的原因
我们接下来讲解几个一定要学习【数据结构与算法】的几个原因,这里面也包含了我为何要去学习的原因。
(1)锻炼思维以及问题处理能力
代码都是冷冰冰的没有思想的符号,要使他起到处理问题的作用,那还是要靠我们自己来动手。
假设把鸡兔同笼的问题让你用代码来解决,你第一时间就会想到用数学中的方程就可以轻松解决,但到代码中,你会斟酌半天,那是因为你没学过数据结构与算法,在你的脑海中还没有建立这样一种思维,所以遇到这样的问题才会不那么熟练。
当你学习完【数据结构与算法】后,也慢慢地能处理这种简单问题了,你就可以尝试着去用代码实现更复杂问题的解决方式。慢慢地,你就会因为有这种解决问题的思维方式,在遇到问题时能立马想到解决方案,这就体现了我们思维很跳跃、迅速。
(2)可以优化代码运行效率
你们在上网时有没有遇到过这样的情况?
出现这种情况的原因一般有两点:
- 网络较差
- 代码还未完全运行完,无法呈现正常的页面给用户,所以用一个加载中的样式来替代
我们就暂且不考虑第一种情况,直接来看第二种情况。
像在访问淘宝 、京东等这些大厂的网页时,难免也会出现这种情况,那是因为他们后台有大量的数据需要拿过来呈现在网页上,所以在后台获取相应数据时,可能会消耗点时间,这还是他们在使用了数据结构与算法相关知识将代码优化后的情况,设想一下,如果他们用最原始的方式,即逐一遍历并获取数据,那我们在访问页面时需要等待的时间可就不是几秒钟那么短暂了。
在本文开头,我们就提到了,假设获取数据库里 李四
的信息,需要遍历10000条数据,如果每遍历100条数据需要1秒,那么,我们就需要等待100秒的时间;而优化了一下整个数据库的数据结构以后再去查找 李四
的信息,最多只需要遍历100条数据,那么我们最多只需要等待1秒钟。
这样的用户体验就特别的舒服,你觉得呢?
(3)【数据结构与算法】是进大厂必备的基础知识
其实,我之前经历过一次大厂的前端面试,他们在面试中就问到了我【数据结构与算法】的问题,但因为之前我一直认为这是后端应该学的,不关前端的事,所以我就没去学习,所以我在面试中也没有回答上来。
其实大厂都认为一个优秀的程序员(不管任何岗位)必须具备过硬的代码开发能力,这是什么意思呢?其实就是让你在数据结构 、算法思维 、代码效率优化上有一定的知识储备,同时你可以在工作中单独面对并解决一些实际问题。
这也就是为什么大厂面试必问【数据结构与算法】的原因了。
三、【数据结构与算法】的学习方法
上面讲了三条学习【数据结构与算法】的原因,想必你已经明白了它的重要性了,接下来我们来讲解一下该如何学习,以及我自身学习的心得体会。
(1)不要盲目刷题
其实在学习之前,我就听说了,很多的程序员为了应对面试中的算法题,在各种网站上大量的刷算法题,其实这种做法是不完全正确的(我不是说刷题这种方式是错误的,只是说这种方式有点缺陷)。
中国的应试教育让很多学生在学习上走了很大的弯路,为了应付面试中的算法题而疯狂刷题的这种做法也是应试教育的体现。
其实数据结构与算法并不难,只是知识点有点多,所以看起来特别的难学,而他们的原理其实都很简单,只要掌握了它的原理,有一定的算法思维,在面对问题时就不会束手无策了。
刷题只是个学习的形式,但不是唯一方式,你可以在刷题的过程中检验你的学习成果,但千万别以为你只要刷完所有的题,你就能解决所有的问题,因为题是千变万化的,问题也是多种多样的,掌握了基础你才能面对任何的问题。
当然了,在面试前适当地刷刷题也是可以的,用短时记忆来记住一些题,如果运气好在面试中遇到相同的题目,可以更快地解决,为别的题节省出思考的时间。
再补充一点哦,有时在面试中,你如果没写出某道算法题,你只要给面试官说一下思路,也是加分的哦~所以你明白掌握原理基础有多重要了吧
(2)规划学习路线
在学习【数据结构与算法】之前,你需要先了解一下它都包含了哪些内容,这里我从网上找了个思维导图,大家可以看一下,先初步有个印象
图中的右侧是数据结构相关的知识点; 图中的左侧是算法的相关知识点;
大家可以根据这样一个思维导图去网上搜寻教学视频看一看,也可以专门买本书,跟着书本上的顺序进行学习。
当然了,也可以关注我,我会根据这个思维导图,分别写一些文章来供大家学习,并且我会把这些文章放到【数据结构与算法】这个专栏里,供大家学习使用。
希望这篇文章能对你们有所帮助,我是Lpyexplore,创作不易,喜欢的加个关注,点个收藏,给个赞~ 带你们在Python爬虫的过程中学习Web前端