人们常说:
程序 = 数据结构 + 算法
当遇到一个问题,或者有一个需求时,要设计程序来解决问题,重要的一步就是设计算法,并选择或者说设计相应数据结构来实现算法。
数据结构在问题解决中主要用来:
数据结构可以用一个四元组来表示:
Data Structure = ( D, L, S, O)
D: data - 数据元素
L: logic - 数据元素之间的逻辑关系
S: storage - 逻辑关系在计算机中的存储结构
O: option - 某个数据结构所允许进行的操作
逻辑结构是指数据元素之间客观存在的关系,和数据在计算机中怎么存储无关,主要用于人们理解和交流以及指导算法的设计。
逻辑结构分为四类:
一般来说,解决问题,要分析出要解决问题的数据关系,都要基于这四种逻辑关系来思考,如果关系比较复杂,也是由这四种关系组成的,逐层分析出来,发现逃不开这四种数据结构。
逻辑结构主要用于算法设计,而存储结构用于指导算法编程实现。
存储结构有基本的两种:
顺序存储结构在内存中的地址是连续的,所以存取速度很快,但是插入或删除操作效率低,因为插入或删除操作涉及到移动数据元素。
链式存储结构在内存中的地址是不连续的,插入和删除操作效率高,但是由于寻址只能根据前后两个相连的元素依次排查,所以查找和遍历的效率低。
同样的逻辑机构(线性、树形、图形、集合)既可以采用顺序存储结构也可以采用链式存储结构来存储数据和关系。存储结构的选择主要考虑算法的效率,算法的时间和空间哪个更好,具体选择哪种和需求有关,基本存储结构既可以单独使用,也可以组合使用。
主要有遍历、查找、插入、删除、排序等等,具体需要实现的操作根据业务需求确定。
算法用来设计并实现一种用计算机来解决问题的方法。它满足下列性质:
使用计算机解决问题的过程可以分为下面五个步骤: