对算法和数据结构的理解

###############################################

"""

算法对于新手
就是你会了算法,你写代码脑子会清楚,知道该怎么写!

"""

###############################################

"""
算法的重要性有几点
1,面试用,80%的公司都会考算法,认为算法好的人,思维好,基础好,有潜力,所以有很多的公司,你技术一般,但是算法好,也要你,因为你有培养的潜力,
2,算法工程师工资高
3,训练编程思维,
4,提高你的代码的性能,

"""

###############################################

"""
算法与数据结构对程序员的重要性

曾经有个说法,程序=数据结构+算法。这在面向过程的编程语言流行的年代是很受推崇的。
那么,在这个多样化的年代,如果想立志做编程开发,还有没有必要学好数据结构和算法呢?
我的回答是,非但有必要,更应该学好、学博、学精。

第一,数据结构与算法是程序的灵魂,是朴素的基础,学好它有有助于理解各种上层抽象。

在没有充分学习和理解数据结构与算法的基础上去学习面向对象、设计模式,是无法真正体会这些上层抽象的真正意义的,最终可能会导致学之泛泛,用之泛泛。

遇到的真正设计高手,还没有一个是对数据结构与算法是不精通的。
让他讲为什么这样设计,为什么这样架构,他往往能深入浅出,将面向对象的思想、设计模式的考虑,与基础的数据结构和对应的算法结合起来,贴合问题的实际情况,给出良好的结论。 从编程的角度来看,数据结构与算法几乎是最朴素的基础知识了,这是关,是每一个立志当好程序员的必经之路, 第二,在编程实践中,数据结构和算法随处可见,影响重大。 见过不少对链表的基本属性都不了解的人,在程序里一味使用数组,内存能开多大就多大;
也见过太多根本不知道HASH原理的人,对Hash表随意使用,造成KEY值严重重复、效率极为低下、失去了选用HASH的初衷。 第三,现在的软件工程充斥着大量的过度设计、资源浪费,实际上已经到了硬件承受不了的地步了。学好数据结构和算法,能够从根本上去避免这些问题。 第四,当今流行的WEB新时代,各种云概念,海量数据,百万用户并发(从以前著名的C10K问题,到现在的C1000K甚至更高问题),最终都是数据结构与算法的比拼。这一切,较量才刚刚开始。
"""

###############################################

"""
用计算机解决实际问题,
首先要做的事情就是要把涉及问题的相关信息存储到计算机中,所以先要用合理的结构表示数据
然后根据问题处理功能的要求,对存储到计算机中的数据进行处理。根据相应的算法处理结构,

所以数据结构和算法就是处理问题的两个步骤
1,收集信息,使用数据结构存储数据,
2,处理信息,这就是算法了,
数据表示和数据处理正是数据结构学科要研究的内容。

商用程序员李申在他的博客中写到:“这么多年,我做过游戏、通信、工业控制、教育、VoIP、服务器集群等各个方向的项目,不可谓不宽”。

但是我知道的是,其实我都是在用同一种方法写程序。那就是从最底层的数据结构和算法开始做起,用最基本的C、C++语言开发。用来用去,还是那么几个数据结构,队列、堆栈,等等。

这就好比武侠小说里面的内功,内功修好了,学招式,非常容易。但如果没有内功,练再好的招式,见到高手就软了。一力破十慧,就是这个道理。在绝对的实力面前,任何花招都是没有用的。


"""

###############################################

"""
业务开发工程师,你真的愿意做一辈子CRUD boy吗?
如果你是一名业务开发工程师,你可能要说,我整天就是做数据库CRUD(增删改查),哪里用得到数据结构和算法啊?


何为编程能力强?是代码的可读性好、健壮?还是扩展性好?我觉得没法列,也列不全。但是,
在我看来,性能好坏起码是其中一个非常重要的评判标准。但是,如果你连代码的时间复杂度、空间复杂度都不知道怎么分析,怎么写出高性能的代码呢?

有一些大龄候选人,简历能写十几页,经历的项目有几十个,但是细看下来,每个项目都是重复的堆砌业务逻辑而已,完全没有难度递进,看不出有能力提升。
久而久之,十年的积累可能跟一年的积累没有任何区别。这样的人,怎么不会被行业淘汰呢?

如果你在一家成熟的公司,或者BAT这样的大公司,面对的是千万级甚至亿级的用户,开发的是TB、PB级别数据的处理系统。
性能几乎是开发过程中时刻都要考虑的问题。一个简单的ArrayList、Linked List的选择问题,就可能会产生成千上万倍的性能差别。
这个时候,数据结构和算法的意义就完全凸显出来了。 数据结构和算法这个东西,如果你不去学,可能真的这辈子都用不到,也感受不到它的好。但是一旦掌握,你就会常常被它的强大威力所折服。
之前你可能需要费很大劲儿来优化的代码,需要花很多心思来设计的架构,用了数据结构和算法之后,很容易就可以解决了。 算法和数据结构有多重要? 他们的影响无处不在
"""

###############################################

"""
从我接触到算法及数据结构的学习开始,就经常看到各种书中说,计算机程序就是由数据和算法组成的。但是我一直不能理解为什么这么说。
今天也是搜索了一下,
看到的比较多的回答是这样的,
我们解决问题的思路一般是三个步骤:
1)准备输入
2)处理数据
3)得到输出
这应该最最上层的抽象步骤。

通过学习了基本的算法和数据结构,你在处理数据的时候,就可以按照一种已经有的解决方案。而不是重新寻求新的方案。我觉得这个解释比较重要。这也是给了我非常好的启发。
换句话说,就是说,还是学习了已经有的算法思维,来给我们后续的问题提供思路。

就是我每次解决问题的时候,并不能去思考以后的算法,那些东西不能给我帮助。
我感觉,我每次写程序,我就是按照一种过程式编程的思想来进行的。
最直观的说法,就是我在写程序的时候,就没有可以借鉴的东西。
所以我到底欠缺到哪里。
,或者说,上面的这个,就是因为我脑子里本身就没有??

我感觉,我的思维存在一些问题,导致我每次都是感觉脑子里空空的,想问题有些直。
所以这样以来,其实是我思考问题,或者解决问题的思路不对。



"""

###############################################

"""

平时工作中很少接触的数据结构与算法,为什么会经常出现在面试题中呢?这不是让人很难理解吗?

1,在面试时考察数据结构与算法,也是在短时间内考察一个人长期潜力的捷径。
因为数据结构与算法功底扎实的程序员,其技术实力、业务能力、自学能力大多都不会差。
这种问题考验的更多的是一个人的编程功底和长期积累。所以很多大公司都会使用算法题来筛选人才。

2,在计算机编程领域,数据结构与算法的应用是无处不在。
比如图像视频处理、数据库、游戏开发、编译器、搜索引擎、AR、VR、人工智能、区块链等领域,都是以数据结构算法为基石。
扎实的数据结构与算法功底,能让我们站在更高的角度去思考代码、写出性能更优的程序,
能让我们更快速地学习上手各种新技术(比如人工智能、区块链等),能让我们敲开更高级编程领域的大门。

"""

###############################################

###############################################

###############################################

猜你喜欢

转载自www.cnblogs.com/andy0816/p/12348020.html