序言

         

基本术语

1.数据结构主要研究的是从实际问题中抽象出来的问题,是对实际问题的高度总结抽象,在各个计算机科学领域和软件领域都会用到的知识。

 

2.数据结构又是主要研究非数值计算,非数值计算的特点是加工时数据量很大,所处理的数据之间存在着某种特定的关系,计算机在处理它们时需要对那些关系进行表示,还需要对它们进行组织,管理,维护,检索等等。

 

3.数据的定义:能够被输入到计算机中并被计算机加工,处理的符号的集合。

 

4.数据元素:数据是由一个个数据元素组成的,每一个数据元素都具有完整的,确定

实际意义,是数据加工处理的对象

 

5.数据项:是数据元素的组成,也被称作字段,域等,是数据元素中不可分割的最小

位,通常不具备完整的,确实的意义,只是反映数据元素的某一方面的属性。

 

 

6.数据之间的关系:分为逻辑关系和储存关系。

 

数据的逻辑关系

如果两个数据元素之间存在某种逻辑关系,那么就称这两个数据元素之间是邻接的。从大量事件中抽象出来的常见邻接关系一般有三种:线性关系,树形关系,图状关系,数据之间的邻接关系就是数据的逻辑结构,所体现出的是人思想下的元素抽象关系,并不是数据元素在计算机中的实际储存关系,所以,数据的逻辑关系是独立于计算机的人对数据的抽象。

 

1.线性关系:有头有尾,顺序排列

 

 

2.树形关系

 

 


3.图形关系

 

相对于树形关系中只有一个前项,后项无限制而言,图行关系对于前项也没有限制,任何两个元素之间都有可能存在邻接关系。交通网络就是一个典型的例子。

 

数据的逻辑结构的形式化描述,对于无需的逻辑结构使用小括号表示两个数据元素之间的逻辑结构,对于有序的逻辑结构,使用尖括号来表示数据元素之间的关系。

 

 

数据的储存结构

数据的储存结构又叫数据的物理结构,在实际的数据储存时,不仅仅要储存数据本身,还要储存数据间的邻接关系,这样在对数据进行加工的时候才能够方便,正确的从一个数据找到另一个邻接数据。

在储存器中,有两种储存方式,一种是集中地存放在内存中的一个连续的储存区,另一种是利用储存器中零散的区域进行储存。数据的储存是以数据元素为单位,分配给一个数据元素的储存区域,称为储存节点,往往,在一个储存节点中不但有数据本身,还有表示数据邻接关系的数据。

1.对于顺序式的储存结构,其中储存节点存放的是数据本身的内容,没有邻接关系数据,其本身是借助储存节点的实际位置关系来进行对数据的处理。

2.对于链式储存结构,储存节点中不仅仅有其本身的数据,还有表示邻接关系的数据,这个邻接关系数据实际上就是指针。

 

两种储存结构仅仅从本身来说,当然,不考虑实际问题,顺序储存的利用率相对于链式一个是储存要高,由于链式中包含了其邻接关系数据 ,二是速度要快,这个是硬件本身决定的。

 

算法时空分析

所谓算法,就是一系列有序指令的集合,用来将输入数据转换成输出数据,当然这里的输入输出不一定是标准输入输出。人们要关注数据元素的逻辑结构和储存结构最终的目的是要计算机对它们进行处理。而这些处理就是算法。所以,有一个经典的句子是

 

数据结构 算法 程序设计

数据的结构决定了算法,优秀的算法决定了程序的效率。所以,程序设计就是一个良好的数据结构加一个合适的算法。数据结构是进行算法设计的前提。

 

算法的五个特征:

1.输入:至少需要一个输入

2.输出:可以没有输出,也可以有一个或多个输出

3.确定性:算法中的每一个步骤都必须具有确定的含义

4.可行性:算法中描述的每一步操作都是可以被计算机执行实现的

5.有穷性:一个算法必须经历有限个步骤之后结束

 

 

对于算法五个特征,其实大多数时候在进行算法设计的时候,就自然会遵守,但是往往还需要更多的约定,特别是资源上,时间,硬件资源,人力资源等等。基本的特征是这五个。

 

算法描述:

 

1.使用人类的自然语言

2.使用流程图

3.使用类C语言描述

4.使用编程语言描述

 

对于第四点,是数据结构这门课程所选择的描述方式,所谓类C语言,即是对C语言做一些简化,略去对算法来说无关紧要的部分(如变量声明,函数向前声明,库的包含等等)

 

算法分析

在算法分析中,最重要的两个部分是执行效率(时间)和对储存的利用(空间),数据结构中,对一个算法执行效率的度量,称为时间复杂度(Time Complexity),对一个算法执行过程中所需要储存空间的度量,称为空间复杂度(space Complexity)。理想的算法当然就是高效率低储存空间,但是,大家都懂的,鱼与熊掌不可兼得。

 

基本术语

 

1.语句频度:某语句重复执行的次数

 

一般的算法都可以粗略地计算出执行的次数,对于时间复杂度,就是其次数中数量级最大的数量级,使用大O表示,比如某个算法需要执行2n的二次方次,时间复杂度就是n的二次方,当然对应的还有1nn的三次方等。

对于算法的空间复杂度分析,又是处理数据需要开辟辅助储存单元,本身的数据储存单元和问题本身有关,所以算法分析时,分析的是辅助储存单元,由于和时间复杂度类似,就不再叙述。

 

详细的算法分析   待续--------------------------------------------->

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值