数据结构与算法基础概念

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

以上是关于数据结构与算法基础概念的主要内容,如果未能解决你的问题,请参考以下文章

数组概念与基础以及数组常用算法

数据结构与算法学习笔记:数据结构基本概念

数据结构与算法基础 第一章 绪论

.数据结构与算法基础

数据结构与算法(Python)-一般概念和算法效率分析

数据结构与算法基础