数据结构和算法:为什么要学习数据结构和算法?

一、现实

在平时的编码工作中,到底会有多少机会需要自己亲自编写一个链表或排序算法呢?

答案是:可能永远都不会。

二、然而...

学习数据结构有什么用?

  • 了解使用算法解决问题的一些思想,能够让你知道如何更好地优化自己的代码
  • 除了标准的数组和字典之外,了解一些其它的数据结构让你在构建自己的 App 时拥有更多的选择
  • 程序的性能瓶颈往往都跟算法和数据结构有关系,对于小规模的数据量简单粗暴的方法往往能很好的完成工作,但事情并不总是如人所愿。对于大数据量,我们需要使用更加聪明的算法
  • 还有些时候,我们对自己所面对的问题根本就手足无措,甚至连一个效率较低的算法都写不出来,根本就不知道从何处下手。这时候,如果了解一些算法理论,就会有更多的方法去尝试
  • 为了面试获得更好的表现(这一点也是很现实的,

三、大家怎么说?

学习数据结构,就是为了了解以后在IT行业里搬砖需要用到什么工具,这些工具有什么利弊,应用于什么场景。以后用的过程中,你会发现这些基础的“工具”也存在着一些缺陷,你不满足于此工具,此时,你就开始自己在这些数据结构的基础上加以改造,这就叫做自定义数据结构。

web 编程也好,手机 app 也罢,都是应用层面,遵循固定的教程就能开发出来,如果不深入底层,都不需要怎么思考的,纯靠多做有经验了就能找到工作。

殊不知算法和数据结构(也就是数学有关的东西)才是关键呀!

考这种算法题目的意义不在于工作当中会用到,而在于证明候选人有基本的算法能力,编程也要遵守基本法,这种基本的算法能力就是基本法,你说能做出来是不是最吼的? 
 
因为程序员不仅仅是调用API就完事儿了,还需要在已有的API基础上加上业务相关或者需求相关的逻辑,这时候是不可能找到现成的代码或者第三方库的。比如做一个客户端采集数据然后上传服务器,并且在客户端显示的功能,按说只要调用服务端http请求,响应采集来的数据就可以了,并不需要什么算法啊数据结构的知识,也是很常见的应用场景。但是采集来的数据和服务器端数据如果不匹配,要做数据格式转换的话,数据结构设计的不好转换起来就事倍功半,算法基础不好转换代码就很难维护而且效率低。一般来说最初设计采集到的数据和服务器端数据格式一定是一样的,但是随着时间推移需求变化,一定会出现不一样的情况,这时候没有基本的算法能力做出来的程序是没办法适应第二个版本的。

项目经验、当红应用的开发经验当然重要,但是没有基本的算法能力就只能做搬砖工,根据别人的指导来开发项目,只有具备这方面能力才能成为一个项目的核心人员,哪怕只是一个小项目。

The way I see it, it is not algorithms that I need in everyday life, but the ability to quickly analyze the problem and find a solution.

四、参考资料

  • Swift Algorithm Club: 为什么要学习算法与数据结构
  • If advanced algorithms and data structures are never used in industry, then why learn them? - Quora
  • 学习数据结构有什么用?- 知乎
  • 怎么看待程序员普遍缺乏数据结构和算法的知识?- 知乎

如果你也喜欢交流技术、喜欢阅读、积极践行,欢迎关注我的公众号:祥龙Shannon写字的地方,一起成长。

qrcode_for_gh_cc686217be41_344.jpg

你可能感兴趣的:(数据结构和算法:为什么要学习数据结构和算法?)