数据结构的基础概念
数据是表征客观事物的可记录可识别的符号集合。
数据:
描述客观事物的数值、字符以及一切能输入到计算机且能被处理的符号集合。
数据元素:
数据元素是组成数据的基本单位,是数据集合的个体。
数据对象:
数据对象是性质相同的数据元素的集合,是数据集的一个子集。
数据结构:
数据结构,是相互之间存在一种或多种特定关系的数据元素集合。强调是带有结构的数据元素的集合,数据元素之间的相互关系,即数据的组织形式,即数据的组织形式。
数据类型:
一组性质相同的值集合以及定义其上的一组操作的集合。
抽象:
抽象是计算机技术的本质技术。抽象数据类型ADT:就是定义在一个模型上的一组操作的集合。其特点是抽象和隐蔽。包括定义和实现两大方面。
数据结构的内容:
数据结构的内容,即数据结构的研究范围;数据结构注重的是数据元素之间的相互关系。数据结构的内容包括逻辑结构和数据结构的存储结构及运算集合。
【数据结构的逻辑结构】
数据元素之间存在四种基本的逻辑结构:
(1) 集合结构:集合是属于与不属于简单的关系;
(2) 线性结构:结构中的数据元素之间存在着一对一的线性关系:如线性表(学籍表);
(3) 树形结构:结构中的数据元素之间存在着一对多的层次关系:如树(学校组织结构图);
(4) 图形结构:结构中的数据元素之间存在着多对多的任意关系:如图(网络节点图);
综上所述,数据的逻辑结构可概括为:
? 线性结构-----线性表、栈、队、字符串、数组、广义表
? 非线性结构----树、图
【数据结构的存储结构】:是逻辑结构在计算机中的存储映象,也是在计算机中的实现。
逻辑结构和存储结构之间的关系:
存储结构是逻辑关系的映象。逻辑结构是数据结构的抽象,存储结构是数据结构的实现,两者综合起来建立了数据元素之间的结构关系。
数据元素之间关系在计算机中的存储映像分为:
? 顺序映象(顺序存储结构,如数组,就是一组连续配置的单元) ;
? 非顺序映象(非顺序存储结构,如链表,是一组任意配置的单元,通过指针连接起来,维持逻辑关系)
运算集合:
定义在数据集及数据元素关系集上的运算操作集合;
数据结构的内容:按照一定的逻辑关系组织起来的一批数据,按一定的映像方式存放在计算机中,并在其上定义运算集合,就构成数据结构内容的三要素。
算法性能评价:
【性能评价】应是问题规模的函数,以刻画表征问题规模的大小。
【问题规模】对于不同的问题其含义不同:
如矩阵的阶、多项式的项数、图的顶点数、集合的个数等,是反映问题大小的本质数目。
【时间数量关系的计算方法】
算法实际执行时间与机器硬件和软件环境相关(比如两个机器的性能指标不同,就不便比较算法执行的快慢),舍弃机器环境差异影响,语句执行时间本质就是语句执行次数,与机器环境无关。 因此算法的执行时间就是算法所有语句的执行次数之和。
【算法的时间复杂度T(n)】
一个算法的时间复杂度T(n)是该算法的时间度量, 计作: T(n)=O(f(n)) 它表示随问题规模 n 的增大,算法的执行时间的增长率和 f(n)的增长率相同,称图 1.8 多种数量级的时间复杂度图示
作算法的渐进时间复杂度,简称时间复杂度。
【常用算法时间复杂度】
数据结构中常用的时间复杂度频率计数有 7 个: O(1) 常数型 O(n)线性型 O(n2)平方型 O(n3)立方型 O(2n)指数型 O(log2n)对数型 O(nlog2n)二维型 按时间复杂度由小到大递增排列成表 1-3(当 n 充分大时)。 不同数量级的时间复杂度的形状如图 1.6 所示,表 1-3 与图 1.6 是同一问题的不 同表示形式。一般情况下,随 n 的增大,T(n)的增长较慢的算法为最优的法。 从中我们应该选择使用多项式阶 O(nk)的算法,而避免使用指数阶的算法。
常用的时间复杂度频率表
【最坏时间复杂度】 :是指执行基本操作的最大次数。基本操作时指算法中基本运算的操作。
【算法的空间性能分析】 类似于时间复杂度的讨论,一个算法的空间复杂度 S(n)定义为该算法所耗费的存 储空间的数量级,它也是问题规模 n 的函数。记做: S(n)=O(f(n)) 一般情况下,一个程序在机器上执行时,除了需要寄存本身所用的指令、常数、 变量和输入数据以外,还需要一些对数据进行操作的辅助存储空间。其中对于输 入数据所占的具体存储量只取决于问题本身,与算法无关,这样我们只需要分析 该算法在实现时所需要的辅助空间单元个数就可以了。若算法执行时所需要的辅 助空间相对于输入数据量而言是个常数,则称这个算法为原地工作,辅助空间为 O(1)。
算法的时间复杂度和空间复杂度合称为算法的复杂度。
算法和算法描述
【算法的定义】算法是规则的有限集合,是为解决特定问题而规定的一系列操作。也就是说算法是处理步骤的序列集合。
【算法的特性】 :有限性、确定性、可行性和输入输出特性。
【算法设计的要求】 算法需要保证正确性、可读性、健壮性和高效率低存储量等问题。
算法的正确性是不言而喻的,正确可分为三个层次:1、一般数据能得出要求结果;2、精心选择的边界数据也能得到要求结果;3、所有合法数据都能得到要求结果。一层比一层要求更高。
可读性就是便于理解和交流,有助于合作开发。
? 健壮性就是耐折腾,非法操作时也不至于瘫痪。
? 高效率和低存储即:执行效率高,存储容量少,但往往需要折中。
原文地址:https://www.cnblogs.com/ST-2017/p/10462286.html