什么是数据结构?
程序设计= 数据结构+算法
在简单来说数据结构就是关系,就是数据元素相互之间存在的一种或多种特定关系的集合,传统上我们把数据结构分为逻辑结构和物理结构
逻辑结构就是指数据对象中的数据元素之间的相互关系
物理结构就是指逻辑结构在计算机中物理的存储形式
四种逻辑结构:
一,集合结构
集合结构中的数据元素除了同属一个集合外,他们之间没有其余关系,下图是火车站内的情景,除他们都是同处于火车站内外,并无其他关系
二,线性结构
线性结构中的数据元素之间是一对一的关系,下图中的纤夫拉船的场面,我们可以理解为线性结构!!
三,树形结构
顾名思义 树形结构如同树木一样 , 树形结构中的数据元素之间存在一对多的层次关系
四 , 图形结构
图形结构的数据元素是多对多的关系,如同我们去菜市场买菜, 每个顾客 和 每个商家都是多对多的关系
物理结构
物理结构实际就是如何把数据元素存储到计算机的存储器中, 存储器主要是针对内存而言,像硬盘,软盘,光盘等外部存储器的数据组织通常用文件结构来描述!
数据元素的存储结构形式有两种: 顺序存储和链式存储
顺序存储结构就是吧数据远处存放在地址连续的存储单元里 其中的逻辑关系和物理关系是一致的;例如我们PHP中的数组结构就是这样滴!例如我们日常生活中的排队,就是顺序存储结构,但是如果在排队过程中如果有人内急,被迫离开队伍去洗手间,又或者有人不遵守道德规范插队,这些情况都会破坏顺序存储结构的基本原则!
链式存储结构 就是例如医院的排队叫号系统!在等待时人员的位置是不受限制的! 链式存储结构就是这样的原理 相比顺序存储是更灵活的一种存储结构!
什么是算法?
数据结构和算法就像鱼和水的关系,算法是编程中的技巧,可以解决特定的问题.一个问题可以用很多算法来解决,一个算法也可以解决很多的问题,但是没有算法能解决所有的问题!
算法具有五个基本特征: 输入 输出 有穷性 确定性和可行性!:输入: 算法具有零个 或 多个输入
输出: 算法至少有一个或多个输出
有穷性: 算法在执行有限步骤之后自动结束 而不会永远执行!
确定性: 算法的每一个步骤都具有确定的含义,不会出现二义性!
可行性: 算法的每一步都必须是可行的,也就是说 每一步都能够通过执行有限次数完成!
算法设计的要求:
正确性: 算法的正确性是指算法至少应该具有输入,输出和加工处理无歧义性,能正确反映问题的需求,能够得到问题的正确答案; 算法程序应没有语法错误,对于输入能够产生满足要求的输出,对于非法输入能够产生满足规格的说明!
可读性: 算法设计应该便于阅读,理解和交流,算法的设计一方面为了计算机执行 另一方面是为了方便他人阅读和自己日后修改所用!
健壮性: 当输入数据不合法时,算法也能做出相关处理,而不是产生异常,崩溃 或者莫名其妙的结果!
时间效率高和存储量低 : 好的算法要具备时间效率要高 和 存储量较低!