数据结构(一)数据结构基础

数据结构的基础概念

数据是表征客观事物的可记录可识别的符号集合。

数据:

描述客观事物的数值、字符以及一切能输入到计算机且能被处理的符号集合。

数据元素:

数据元素是组成数据的基本单位,是数据集合的个体。

数据对象:

数据对象是性质相同的数据元素的集合,是数据集的一个子集。

数据结构:

数据结构,是相互之间存在一种或多种特定关系的数据元素集合。强调是带有结构的数据元素的集合,数据元素之间的相互关系,即数据的组织形式。

数据类型:

一组性质相同的值集合以及定义其上的一组操作的集合。

抽象:

抽象是计算机技术的本质技术。

抽象数据类型ADT:就是定义在一个模型上的一组操作的集合

其特点是抽象和隐蔽;

包括定义和实现两大方面。

数据结构的内容:

  数据结构的内容,即数据结构的研究范围;

  数据结构注重的是数据元素之间的相互关系;

  数据结构的内容包括逻辑结构和数据结构的存储结构及运算集合。

  • 【数据结构的逻辑结构】
数据元素之间存在四种基本的逻辑结构:

(1) 集合结构:集合是属于与不属于简单的关系; 

(2) 线性结构:结构中的数据元素之间存在着一对一的线性关系:如线性表(学籍表);

 (3)树形结构:结构中的数据元素之间存在着一对多的层次关系:如树(学校组织结构图); 

(4) 图形结构:结构中的数据元素之间存在着多对多的任意关系:如图(网络节点图);

   综上所述,数据的逻辑结构可概括为: ​ 线性结构-----线性表、栈、队列、双队列、字符串、数组、广义表  ;非线性结构----树、图 ;

  • 【数据结构的存储结构】:

  是逻辑结构在计算机中的存储映象,也是在计算机中的实现。

逻辑结构和存储结构之间的关系:

  存储结构是逻辑关系的映象。逻辑结构是数据结构的抽象,存储结构是数据结构的实现,两者综合起来建立了数据元素之间的结构关系。

数据元素之间关系在计算机中的存储映像分为:
  • 顺序映象(顺序存储结构,如数组,就是一组连续配置的单元) ; 
  • 非顺序映象(非顺序存储结构,如链表,是一组任意配置的单元,通过指针连接起来,维持逻辑关系)。
运算集合:

  定义在数据集及数据元素关系集上的运算操作集合; 数据结构的内容:按照一定的逻辑关系组织起来的一批数据,按一定的映像方式存放在计算机中,并在其上定义运算集合,就构成数据结构内容的三要素。

算法性能评价:

【性能评价】应是问题规模的函数,以刻画表征问题规模的大小。 

【问题规模】对于不同的问题其含义不同: 如矩阵的阶、多项式的项数、图的顶点数、集合的个数等,是反映问题大小的本质数目。

【时间数量关系的计算方法】

  算法实际执行时间与机器硬件和软件环境相关(比如两个机器的性能指标不同,就不便比较算法执行的快慢),舍弃机器环境差异影响,语句执行时间本质就是语句执行次数,与机器环境无关。 因此算法的执行时间就是算法所有语句的执行次数之和。

【算法的时间复杂度T(n)】

  一个算法的时间复杂度T(n)是该算法的时间度量, 计作: T(n)=O(f(n)) 它表示随问题规模 n 的增大,算法的执行时间的增长率和 f(n)的增长率相同,称作算法的渐进时间复杂度,简称时间复杂度。 

【常用算法时间复杂度】 

数据结构中常用的时间复杂度频率计数有 7 个:O(1) 常数型 O(n)线性型 O(n2)平方型 O(n3)立方型 O(2n)指数型 O(log2n)对数型 O(nlog2n)二维型

按时间复杂度由小到大递增排列成表 1-3(当 n 充分大时):

  一般情况下,随 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/10280025.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值