数据结构与算法

数据结构与算法

开发工具与关键技术: VS
作者:宋永烨
撰写时间:2020年4月20日

对于编写一个完整的程序来说,合理的数据结构与优质的算法可以使程序更加简洁、更加快捷、运行效率更高等优点,这也是学习数据结构与算法的用途。
首先是数据结构,数据结构就是计算机存储与组织数据的方式,指一个或多个元素相互间存在特定关系的一种集合,灵活的使用各种数据结构可以带来更高的运行效率与存储效率。
数据结构的逻辑结构有多种类型,包括 线性结构,树结构与图结构,这三种结构分别表示元素的存储逻辑的区别。

数据结构与算法 线性结构示意图数据结构与算法 树形结构示意图 数据结构与算法 图结构示意图

线性结构代表结构中的数据存在一对一的线性关系;
树结构代表结构中的元素存在一对多的层次关系;
图结构代表结构中的数据存在多对多多对多的任意关系。
这三种不同的数据逻辑结构又有各自的特点,
线性结构中,除第一个元素与最后一个元素外,每个点都有且只有一个前驱与后继;
树结构中,除根节点外的数据元素每个元素都只有一个前驱,可以有零到若干个后继;
图结构中,每个元素都有零到若干个前驱,零到若干个后继。
至于算法,算法是对一些特定问题的求解步骤的描述他的指令是有限的序列,每一条指令都是一个或多个操作,此外算法还有五个重要特性:
有穷性:一个算法包含的步骤应该是有限的,即一个算法在若干步后就会结束,且每一步的运行时间是有限的。
确定性:算法的每一步都必须有明确的含义,不允许存在二义性。
可行性:算法的每一个步骤都应该是有效而可行的,且可以得到一个明却的结果。
输入:算法在执行时,从外界取得的必要数据,运行程序的主要目的就是为了对数据进行处理,这个数据可以通过输入来得到,也可以包含在算法中,所以算法有零个或多个输入。
输出: 算法必须有一个或多个输出,没有输出的算法是毫无意义的。
具备以上五个特性的才是一个完整的算法。算法的特性可以约束程序设计人员正确的书写算法以达到预期效果。

数据结构与算法
算法示意图(图像仅供参考)

算法除特性外,还有一些额外的要求,这些要求关乎你算法的执行效率。
正确性:只要输入的数据可以得到满足要求的答案,那就满足正确性,但验证算法的正确性较为困难,所以算法正确性指算法达到了测试要求。
可读性:其他人对于你的算法的阅读的难易程度,可读性较高的算法可以更方便的交流与调试,修改等。通常增加算法的可读性通过书写时采用首行缩进格式书写。
健壮性:对于各种非法输入的响应,能应对的越多,就越健壮。
效率与低存储量:即算法运行时间尽可能的更短,算法需求的存储空间尽可能的更少
上述内容就是关于数据结构与算法大致是什么,但个人建议在弄懂这些前最好还是先知道到底需要怎样的程序,特别是算法的要求,这个更像是在完成算法后对算法的后续维护与优化应该干的事。

注:本文大量参考唐老师的<<数据结构与算法>>