第一章 绪论

一、数据结构的基本概念和术语

程序=数据结构+算法

(一)数据、数据元素、数据项和数据对象

  1. 数据 :是客观事物的符号表示,是所有能输入到计算机中去的描述客观事实的符号。

    数值型数据
    非数值型数据(多媒体信息处理)

  2. 数据元素:是数据的基本单位。

  3. 数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。

三者之间的关系:数据>数据元素>数据项
例:学生表>个人记录>学号、姓名

在这里插入图片描述

(二)数据结构

是相互之间存在一种或多种特定关系的数据元素的集合。
数据结构是带“结构”的数据元素的集合,“结构”就是只数据元素之间存在的关系
在这里插入图片描述

  • 逻辑结构:数据元素间抽象化的相互关系,与数据的存储无关,独立于计算机,它是从具体问题抽象出来的数学模型。
  • 存储结构:数据元素及其关系在计算机存储器中的存储方式。
  • 线性结构:有且仅有一个开始和一个终端结点,并且所有结点都最多只有一个直接前驱和一个后继。
  • 非线性结构:一个结点可能有多个直接前驱和直接后继。
  • 顺序存储结构:借助元素在存储器中的相对位置来表示数据元素间的逻辑关系。
    Loc(元素i)=Lo+(i-1)*m
  • 链式存储结构:借助指示元素存储地址的指针表示数据元素间的逻辑关系。

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

(三)数据类型

数据类型是一组性质相同的值的集合体,以及定义于这个集合上的一组运算的总称。

基本数据类型: char int float double void
构造数据类型:数组、结构体、共用体、文件

  • 抽象数据类型(ADT)
    更高层次的数据抽象;由用户定义,用以表示应用问题的数据模型;由基本的数据类型组成,并包括一组相关的操作。

在这里插入图片描述

  • 抽象数据类型的表示与实现

    • 数据元素被约定为ElemType类型,用户需要根据具体情况,自行定义该数据类型。
    • 基本操作的算法描述为以下的函数形式:

    函数类型 函数名(函数参数表){
    语句序列;
    }

    • 内存的动态分配与释放:在这里插入图片描述
    • 赋值语句
    • 选择语句
    • 循环语句
    • 使用的结束语句形式有:

    函数结束语句 return;
    循环结束语句 break;
    异常结束语句 exit(异常代码);

    • 输入输出语句形式有

    输入语句 cin(scanf())
    输出语句cout(printf())

    • 基本函数有

    求最大值 max
    求最小值 min

(四)算法与算法分析

  • 算法定义:为了解决某类问题而规定的一个有限长的操作序列。

  • 算法的描述:

    • 自然语言
    • 流程图
    • 程序设计语言
    • 伪码
  • 算法的特性
    输入:有0个或多个输入。
    输出:有一个或多个输出(处理结果)。
    确定性:每步定义都是确切、无歧义的。
    有穷性:算法应在执行有穷步后结束。
    可行性:算法是可行的。

  • 评价算法优劣的基本标准

    • 正确性
    • 可读性
    • 健壮性
    • 高效性

1.算法的时间复杂度
算法的时间复杂度取决于问题的规模待处理数据的初态

  • 算法中基本语句重复执行的次数问题规模n的某个函数f(n),算法的时间量度记作T(n)=O(f(n))
  • 表示随着n的增大,算法执行的时间的增长率和f(n)的增长率相同
    ,称渐近时间复杂度,简称时间复杂度

在这里插入图片描述

在这里插入图片描述
2.分析算法时间复杂度的基本方法
n*n阶矩阵加法:

for(i=0;i<n;i++)
   for(j=0;j<n;j++)
   	  c[i][j]=a[i][j]+b[i][j];

语句频度:重复执行的次数 n*n

T(n)=O(n2)
即:矩阵加法的运算量和问题的规模n的平方是同一个量级。

  • 找出语句频度最大的那条语句作为基本语句
  • 计算基本语句的频度得到问题规模n的某个函数f(n)
  • 取其数量级用符号“O”表示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.空间复杂度
在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值