第一章 绪论

               第一章 绪论

一、数据结构的基本概念

1.数据

     数据指所有能输入到计算机中并能被计算机程序识别和处理的符号集合

2.数据元素

   (1)数据元素是能独立完整的描述问题世界的实际实体

   (2)数据元素是数据的基本单位,通常作为一个整体进行考虑和处理 

   (3)数据项是构成数据元素的最小单位

   (4)数据元素是讨论数据结构时涉及的最小数据单位,数据项一般不予考虑

   (5)计算机所处理的数据一般具有某种内在联系,即元素和元素之间存在某种关系

3.数据结构

   (1)数据结构是指相互之间存在一定关系的数据元素的集合

   (2)是由一个逻辑结构和这个逻辑结构上的一个基本运算集构成的整体

   (3)主要研究数据的逻辑结构、存储结构、和算法(运算)3个方面的内容

   (4)数据结构被定义为(D,R),其中D是数据的有限集合,R是D上的关系的有限集合

   (5)数据结构是一门研究非数值计算的程序问题中计算机的操作对象,以及他们之间的关系和运算的学科

4.抽象数据类型(ADT)

    (1)ADT是一个数据结构以及定义在该结构上的一组操作的总称,即可以用ADT定义一个完整的数据结构  

   (2)数据类型和ADT的区别:数据类型指的是高级程序设计语言支持的基本数据类型,ADT指的是自定义的数据类型

   (3)ADT提供了定义和实现的不同视图,实现了封装和信息隐藏

   (4)ADT的定义包括:抽象数据类型名,数据元素之间逻辑关系的定义,每种基本操作的接口

   (5)ADT的每个操作由类的成员函数来实现,数据结构由类的成员变量来实现

 

 

二、逻辑结构

1.逻辑结构

   (1)按照视点的不同,数据结构分为:逻辑结构和存储结构

   (2)数据的逻辑结构是指数据元素之间逻辑关系的整体

   (3)逻辑结构与数据元素本身的内容和形式无关,逻辑结构是数据组织的主要方面

   (4)数据结构由逻辑结构、存储结构和基本操作三方面组成

   (5)一个数据结构是由一个逻辑结构和这个逻辑结构上的一个基本运算集构成的整体

   (6)基于某种逻辑结构上的基本操作实现是不唯一的

2.从逻辑关系讲,数据结构的分类

     主要分为:线性结构、非线性结构两类

   (1)集合------------数据元素之间要么属于同一个集合,要么就没有任何关系

   (2)线性结构----数据元素之间存在“一对一”的线性关系

   (3)树结构--------数据元素之间存在"一对多"的层次关系

   (4)图结构--------数据元素之间存在“多对多”的任意关系

     树结构和图结构也是非线性结构

 

 

 

 

 

三、存储结构

1.存储结构

   (1)数据的存储结构又称为物理结构,是数据及其逻辑结构在计算机中的表示

   (2)存储结构存储的内容:数据元素和数据元素之间的逻辑关系

   (3)数据的存储结构是数据的逻辑结构的存储映象,数据的物理结构是指数据在计算机内的存储形式

2.常用存储结构

  (1)顺序存储结构------用连续存储单元依次存储数据元素,数据元素之间的逻辑关系用元素的存储位置来表示

   (2)存储结构------用任意的存储单元存储数据元素,数据元素之间的逻辑关系用指针来表示

  (3)索引存储

  (4)散列存储

3.不是每种数据结构都具有插入、删除和查找这三个基本操作,如二维数组不能删除

 

 

四、逻辑结构与存储结构的关系

1.为了区别数据的存储结构,常常将数据的逻辑结构称为数据结构

2.相同的逻辑结构可以用不同的存储结构来实现

3.不同的存储结构下基本操作的实现是不同的

 

 

 

 

五、算法基本概念

1.算法

     算法是对特定问题求解步骤的一种描述,是指令的有限序列,是有穷指令的集合

2.算法的五大特性

     有0个或多个输入、有1个或多个输出、有穷性、确定性、可行性

3.评价算法

     算法的效率包括时间效率和空间效率

4.常用描述算法的方法

     自然语言、流程图、程序设计语言、伪代码(算法语言)

5.度量一个算法的效率有两种方法

    (1)事后统计

    (2)事前分析估算

6.影响算法时间代价的最主要因素是:问题规模

 

 

 

 

 

 

 

 

六、算法分析

1.算法分析的目的:分析算法的效率以求改进

2.算法分析的两个方面:时间性能、空间性能

3.基本语句:执行次数与整个算法的执行次数成正比的语句

  基本语句的执行次数可以反应一个算法的执行时间,度量算法的工作量

4.时间复杂度:

  (1)时间复杂度是基本语句的执行次数在渐进意义下的,是由基本语句执行次数的数量级来确定的,用大O记号,是一种估算方法

  (2)一个算法的时间复杂度是问题规模的函数

  (3)时间复杂度的计算:可忽略所有低次幂和最高次幂的系数

(4)常见时间复杂度

O(1)<O()<O(n)<O(n*)<O()<O()<……<O()<O(n!)

5.空间复杂度

    是指该算法所消耗的存储空间,它是该算法求解问题规模的n的函数

6.实例

  (1)若一个算法中的语句频度之和为T(n)=6n+3n*log2n,则算法的时间复杂度为:O(n*log2n)

  (2)若一个算法中的语句频度之和为T(n)=3n+n*(log^2)+n^2,则算法的时间复杂度为:O(n^2)

 

 

 

 

 

 

 

 

七、重点汇总

 


 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值