为什么要学习数据结构与算法

weblog 4197 0 0

        从计算机程序出现的第一天起,对效率的追求就是程序天生的信仰,这个过程犹如一场没有终点,永不停歇的F1方程式竞赛,程序员是车手,技术平台则是在赛道上飞驰的赛车。---深入理解java虚拟机

        现在是2019年,互联网发展已经进入到新的阶段,而不在像前两年的野蛮生长,现阶段会对从业人员的要求会提高,毕竟市场上的人也逐渐增多,我知道的一个Java岗位,一天就有2000个简历投递进入,而想要打败这么多的人,能力不突出那么就会被淘汰掉,而什么是自己突出的能力,就需要好好思考一番。
        突出能力包括解决复制问题的能力,有深入框架底层,能够解决一些疑难杂症的能力,有快速学习,快速上手的能力,而这些都需要靠一些知识沉淀,这些知识的沉淀都还得是计算机知识。
        为什么学习算法可以让自己的知识沉淀,通过编程语言实现算法,能够让自己逻辑更清晰,让自己思考的更全面,比如二叉树,B-树,B+树,通过一些学习和实现,能够理解为什么数据库中实现B+树作为存储结构。在实现过程中,也能够检验自己对编程语言的驾驭能力,而不是通过堆砌代码来实现简单的接口任务。沉淀的还有自己的架构能力,虽然这种方式与架构能力八竿子打不着,但是确可以深深地影响自己以后架构能力,如果对算法,数据结构了解不深,那么就根本不会去思考框架的优劣,不去思考框架给自己项目带来哪些影响。
        万变不离其宗的是那些算法和理论,在日新月异的互联网中,框架变化太快,追逐框架,自己的精力永远也更不上。而最新的人工智能等新技术,对算法的要求特别高,应该说,如果一个人的算法知识不够,那么对新技术的知识就会完全不懂,更不谈通过这些新技术而衍生的方面,自己就只能错过这些。而对于从事Java web开发领域,如果一个简单的排序,一般会想到For循环遍历,是否会想到冒泡排序,是否会使用到Java已经封装好了的排序规则,而底层实现就是用到的那些算法。
并不是算法有多么的好,必须要像算法开发工程师那样精通算法,其实不是,也不是需要短时间掌握的,而是通过学习算法和数据结构,以达到知识的一种沉淀。
        如果真的开发了几年的程序员,没有计算机知识的沉淀,那么自己就可能无法竞争的过年轻的程序员。前几年还好,大龄程序员因为市场野蛮生长,已经获得了足够的经验和地位,而之后对于新进入的程序员,要求就非常严苛,毕竟互联网也在升级。

会算法和不会算法的区别

        不会算法时你也许会是这样

        会算法的你可能会是这样


猜你喜欢
weblog 1049 java架师需那些知识原文:https://blog.csdn.net/zuiyingong6567/article/details/80285827既然java架师,首先你是一个高
数据结构与算法 1851 原文链接:https://www.zhihu.com/question/23148377?sort=created基础 时间复杂度 空间复杂度基础 线性表 列表(必) 链表(必
数据结构与算法 4693 堆排序(英语:Heapsort)是指利用堆这种所设计的一种排序。堆是一个近似完全二叉树的,并同时满足堆积的性质:即子点的键值或索引总是小于(或者大于)它的父节点。以最小堆例下沉操
数据结构与算法 1173 思想:把所有需排序的分成两个集合,一个是待排序集合,一个是已排序的集合,每次从未排序集合顺序或随机拿取一个,把它加入到已排序集合使其有序,直到未排序集合中的被取走完,
数据结构与算法 1285 思想该使用递归实现,思路:每次递归将待排序组在中间位置分成左右两组,分别对左右两个组进行归并排序,递归的条件是组长度必须大于等于3,所以当组中只有两个的时候可以直接进行比较排
数据结构与算法 1292 思想:希尔排序是插入排序的增强版,其主思想还是插入排序的思想。描述:在插入排序的基础上,对待排序组进行间隔inc的分组,然后对每个分组进行直接插入排序,一次排序完成后,减小inc
数据结构与算法 1505 prim(普里姆)求出。对于任何一个,理解和实现只是一个方面,更重的是明白它的应用范围或应用场景,最小生成树的应用非常广泛,例如:假设在n个城市之间建立通信联络网,则连接n个
数据结构与算法 1467 思想将待排序集合以该集合中随机的一个分界点分成左右两个集合,一次排序使其右边的集合的全部大于左边的集合,然后再分别递归式的对左右两个集合执行上述排序操作,直到递归集合没有,递归束完
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。