北京看白癜风疗效最好专科医院 https://jbk.39.net/yiyuanzaixian/bjzkbdfyy/jzpj/今天呢,我和大家聊聊数据结构和算法的联系。大家可能会有所疑惑:我们不是在学习数据结构吗,怎么突然间又提到算法了?大家有这个疑惑,我能理解,当初我学数据结构的时候也像大家一样纳闷,但是学的过程中,我逐渐明白了,为什么许多书籍都会把数据结构和算法关联起来。
我们讲过,常用的数据结构其实就那么几种,如果只是单纯的去讲这几种结构,其实很快我们就能学完,但是,学完之后,大家可能还是一脸懵逼:数据结构到底能干啥?我们学习知识,不能只是停留在它是什么的概念或者理论上,更重要的是我们应该学会将它应用在实践上。举个例子,当我们读到文学作品里那些优美的语句,我们内心会变得很喜悦,而且当我们将这些语句分享给他人时,对方可能也会感觉很兴奋,这就是文学的力量,文学的价值,它能感染人群,陶冶人的情操。那么说到数据结构呢,它的存在是为了更好地解决实际问题,可是空谈它是没有用的,我们要想着怎么去使用它。而算法,就是帮我理解并使用数据结构的利器。还记得上篇我们提到的“程序=数据结构+算法”这句名言吗?对于程序来说,它俩是密不可分的。我们要在程序里使用数据结构,而算法能将数据结构的使用进行落地。好了,接下来进入正题,我们就来聊聊算法的那点事。
1、算法的概念
什么是算法呢?简单点说,算法就是解决问题的一系列步骤。还记得中学时代我们是怎么解方程的吗?先把未知变量的项移到同一侧,然后对另一侧能计算的数字进行计算,最后方程两边同除以变量的系数,就可以得出变量的值,也即方程的解。这个解题的步骤其实就是算法。算法很重要,有一点我要先给大家说明:程序执行的好坏,跟算法的好坏有很大的关系。
2、算法的特性
算法有五大特性,分别是:
(1)有穷性
一个算法应该是在有限的步骤里就可以执行完,而且执行的时间应该也是有限的。
(2)确定性
一个算法,它的每一步都应该有确定的含义,不应该模糊不清,而且应该总能得到确定的结果。
(3)可行性
一个算法应该是可以执行的,即能够根据现有的基本运算方式来执行该算法的每一步操作。
(4)输入
一个算法有零个或者一个输入值
(5)输出
一个算法能产生一个或多个结果输出。
3、算法的设计
算法的设计有四大要求,这里我就简述一下,它们分别是:正确性、可读性、健壮性、高效率和低存储量。算法的设计这块是个比较大的知识点,有一定的难度,也很值得我们花时间去学习,算法学的好,那对我们的编程能力的提升会有莫大的帮助。后续我们单独开一系列来讲算法。
4、算法的效率
算法本身其实是有优劣之分的。算法设计的好,那就能更好地解决问题,而设计的差,可能执行的效果就没那么好,比如要用好久才能执行完。作为编程人员,我们会经常用到算法,比如计算全班同学的平均年龄、计算某个街道各个年龄段的人群数。我们要设计好的算法,就需要