数据结构、算法、计算机原理是编程和实践的根基,看似枯燥和基础,却具有最长久的生命力。
作为人类高质量程序员,写代码精髓就是领略数学之美。
算法:
.......
数据结构:
.......
作为程序员的你,认为编程必须掌握哪些算法?快来分享你的见解吧!
● 围绕算法,发表见解 50 字以上(需原创,禁止转载)
回答赞同数 TOP10 的用户将有机会获得精美定制小礼品一份
腾讯云开发者社区小助手 9 月 10 日在获奖评论下通知答主,奖品将于30日内发放
更多精彩问答与定制好礼,尽请关注 【云+有奖问答专题】 \( ̄▽ ̄)/
程序 = 数据结构 + 算法 。数据是程序的中心。数据结构和算法两个概念间的逻辑关系贯穿了整个程序世界,首先二者表现为不可分割的关系。没有数据间的有机关系,程序根本无法设计。换言之数据结构是底层,算法就是高层。数据结构为算法提供服务。算法围绕数据结构操作。可以说没有算法的程序是没有灵魂的。
数据接口一般分为线性数据结构和非线性数据结构
大家知道了数据结构,还必须要掌握一些常见的基本算法。
理解算法之前必须要先理解的几个算法的概念:
一般常见的算法有二分查找算法,递归算法,还有八大排序算法直接插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序,基数排序基数排序
一个程序员算法能力如何可以能够准确辨别一个程序员的技术功底是否扎实,可以判断出 学习能力与成长潜力和分析并解决问题的能力如何。这也是为什么面试官都喜欢问一些算法和数据结构的原因。
其实算法没有好与坏只有适合自己业务的算法才是最优算法,深入了解每个算法的特性 和自己的业务适配起来
举个例子一些算法的最后往往是一个时空转换的问题
用时间换空间的策略,出发点是内存和存储这样的“空间”资源,有时会成为最稀缺的资源,所以需要尽量减少占用的空间。比如,一个系统的最大性能瓶颈如果是内存使用量,那么减少内存的使用就是最重要的性能优化。
“用空间换时间”就是对“用时间换空间”策略反其道而行之。有些场景下,时间和速度更加重要,但是空间尚有富余,这时我们就可以考虑用空间来换时间。
其实我们部署的任何大规模系统,都或多或少地采用了用空间换时间的策略,比如在集群和服务器间进行负载均衡,就是同时用很多个服务器(空间)来换取延迟的减少(时间)。
优化策略中的最后一个大类就是“更先进算法和数据结构”。这两个策略是紧密配合的,比如先进的算法有时候会需要先进的数据结构;而且它们往往和程序的设计代码直接相关,所以放在一起。同一个问题,肯定会有不同的算法实现,进而就会有不同的性能。比如各种排序算法,就是各有千秋。有的实现可能是时间换空间,有的实现可能是空间换时间,那么就需要根据你自己的实际情况做权衡。
对每一种具体的场景,总会有一种算法是最适合的。我们需要考虑实际情况,来选择这一最优的算法。