数据结构与算法基础概念
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构与算法基础概念相关的知识,希望对你有一定的参考价值。
基础概念
数据结构讨论的范畴,算法、数据结构概念,算法和算法的度量
算法讨论的范畴
算法:处理问题的策略。
数据结构:问题的数学模型(非数值计算)及其上的操作在计算机中的表示和实现。数值计算使用计算数学。
数据结构
算法:处理问题的策略。
数据结构:带结构的数据元素的集合。
数据
可输入到计算机中且被计算机处理的符号集合。
数据元素
数据中的一个个体,数据结构中讨论的基本单位。
数据项
数据结构中讨论的最小单位。数据元素是数据项的集合。
数据的逻辑结构
线性结构、树形结构、图状结构、集合结构
数据结构形式定义
数据结构=(D,S),D是数据元素的有限集,S是D上关系的有限集。
数据的存储结构
逻辑结构在存储器中的映像。
数据元素的映像方法
bit串。
关系的映像方法
顺序映像:以存储位置的相邻(或者一个固定间隔),表示后继关系。整个存储结构中只包含数据元素本身的信息。
链式映像:存储位置不确定,以附件信息(指针)表示后继关系。
数据类型
是一个值的集合和定义在此集合上一组操作的总称,也可以称为数据结构。
抽象数据类型(ADT)
一个数学模型以及定义在这个数学模型上的一组操作。
特点
数据抽象
强调实体的本质特征、所能完成的功能及与外部用户的接口(外界使用它的方法)。
数据封装
将实体外部特性与内部实现分离,并对外部用户隐藏内部实现细节。
描述方法
(D,S,P),D是数据对象,S是D上的关系集,P是对D的基本操作。
算法和算法的度量
算法
解决某种问题而确定的一个有限长的操作序列。
特征
有穷性:对于任意一组合法的输入值,在执行有穷步骤后,一定能结束。即每个步骤都可以在有限时间内完成。
确定性:对于每种情况下所应执行的操作,在算法中都有确切规定,使算法的执行者或者阅读者都能明确其含义及如何执行。并且在任何条件下,算法都只有一条执行路径。
可行性:算法中所有步骤必须足够基本,都可以通过已实现的基本操作运算有限次实现。
有输入:算法加工的对象,可以在算法执行过程中输入,也可以隐含在算法中。
有输出:是一组与“输入”有确定关系的量值,是算法进行信息加工后的结果,这种确定关系为算法的功能。
算法设计原则
正确性
首先,算法应满足以特定的“规格说明”方式给出的需求。,其次对算法是否“正确”的理解有以下四个层次,通常以c作为衡量算法合格的标准。
a.程序中不含有语法错误。
b.程序对于几组输入能够得出满足要求的结果。
c.对于精心选择的、典型、苛刻且带有刁难性的几组输入数据,能够得出满足要求的结果。
d.对于一切合法的输入都能得出满足需求的结果。
可读性
便于理解和调试。
健壮性
当输入数据非法时,算法应作出恰当反映或进行相应处理,而不是产生莫名其妙的结果。并且,处理“出错”的方法不应是中断程序,而是返回一个表示错误或错误性质的结果,以便高层调用处理。
高效率与低存储需求
效率指算法的执行时间,存储需求指执行过程中所需最大存储空间,两者与问题规模有关。
算法效率的衡量和准则
事后统计
缺点:1-必须执行程序。2-其他因素掩盖算法本质。
事前分析估算
时间相关因素
1-算法选用的策略
2-问题的规模
3-编写程序的语言
4-编译的机器代码的质量
5-计算机执行指令的速度
算法执行时间增长率和f(n)增长率相同(n-工作量)。
T(n)=O(f(n)),T(n)为算法的时间渐进复杂度。
算法=控制结构+原操作(固有数据类型的操作)。
算法的执行时间=Σ原操作的执行次数*原操作的执行时间。算法的执行时间与原操作执行次数之和成正比。
算法的空间复杂度,S(n)=O(g(n)),随着问题规模增大,算法运行所需存储的增长率与g(n)相同。
输入数据所占空间。
程序本身所占空间。
辅助变量所占空间。
本文出自 “JAVA技术栈笔记” 博客,请务必保留此出处http://stroll.blog.51cto.com/11038467/1866234
以上是关于数据结构与算法基础概念的主要内容,如果未能解决你的问题,请参考以下文章