初识数据结构

1.基本概念和术语

数据:是客观事物的符号表示,是所有能输入到计算机中并被计算机程序处理的符号的总称。
数据元素(有些情况下,也称为元素、记录等):是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。有些情况下,也称为元素、记录等。
数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。
数据对象:是性质相同的数据元素的集合,是数据的一个子集。

2.数据结构的概念

数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。简单来说,数据结构就是设计数据以何种方式组织并存储在计算机中。

数据结构包括逻辑结构和存储结构。

逻辑结构
从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。
数据元素的逻辑结构有两个要素:数据元素和关系。
关系是指数据元素之间的逻辑关系。
根据数据结构的不同特性,通常有四种基本结构,如图。(复杂程度依次递进)
在这里插入图片描述
集合结构:数据元素之间除了“属于 同一集合”的关系外,别无其他关系。
线性结构:数据结构中的元素存在一对一的相互关系
树结构:数据结构中的元素存在一对多的相互关系
图结构:数据结构中的元素存在多对多的相互关系

存储结构(又称物理结构)
把数据对象存储到计算机时,通常要求既要存储各类 元素的数据,又要存储元数据元素之间的逻辑关系,数据元素在计算级内用一个“结点”来表示。
数据元素在计算机中有两种基本存储结构:顺序存储结构和链式存储结构。
顺序存储结构是借助元素在存储器中的相对位置来拜哦是数据元素之间的逻辑关系;要求所有的元素依次存放在连续的存储空间中;通常借助程序设计语言的数组类型来表示。
链式存储结构无需占用一整块存储空间;通常借助程序设计语言的指针类型来表示。

3.数据类型和抽象数据类型

数据类型是高级程序设计语言的一个基本概念,并且数据类型和数据结构密切相关;它是一个值的集合和定义在这个值集上的一组操作的总称;它反映了程序设计语言的数据描述和处理能力。
抽象数据类型一般是由用户定义的、表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称,具体包括数据对象、数据对象上的关系是的集合以及对数据对象的基本操作的集合三部分。
抽象数据类型的定义格式如下:

ADT 抽象数据类型名{
数据对象:<数据对象的定义>
数据关系:<数据关系的定义>
基本操作:<基本操作的定义>
}ADT 抽象数据类型名

其中,数据对象和数据关系的定义采用数学符号和自然语言描述,基本操作的定义格式为:

基本操作名(参数表)

初始条件:<初始条件描述>

操作结果:<操作结果描述>

4.算法与算法分析

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

一个算法必须满足以下五个重要特性:
1.有穷性
2.确定性
3.可行性
4.输入
5.输出
算法的时间复杂度

衡量算法效率的方法主要有两类:事后统计法和事前分析估算法。 我们通常采用事前分析估算法,通过计算复杂度来衡量算法的效率。

一个算法的执行时间大致上等于其所有语句执行时间的总和而语句的执行时间则为该条语句的重复执行次数和执行一次所需的时间。(一条语句的重复执行次数乘坐语句频度

求两个n阶矩阵的乘积算法

for(i=l;i<=n;i++) //频度为n+1 
   for(j=l;j<=n;j++)//频度为n* (n+1)
   {
          c[i][j]=0;  //频度为n^
          for(k=1;k<=n;k++)  //频度为n2*(n+1)
           c[i][j]=c[i][j]+a[i][k]*b[k] [j]; / /频度为n*n*n
     }

一般情况下,算法中基本语句重复执行的次数是问题规模n的某个函数f(n),算法的时间复杂度记作T(n)=O(f(n))
它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称**时间复杂度。**分析算法的时间复杂度的基本方法为:找出所有语句中语句频度最大的那一条语句作为基本语句,计算基本语句的品读得到问题规模n的某个函数f(n),取其数量级用符号“O”表示即可。
常见的时间复杂度按数量级递增排列依次为:
常量阶O(1)、对数阶O(log2n)、线性阶O(n)、线性对数阶O(n log2n)、平方阶O(n2)、立方阶O(n3)、……、k次方阶O(nk)、指数阶O(2n)等。
算法的空间复杂度

类似于算法的时间复杂度,我们采用渐进空间复杂度作为算法所需存储空间的量度,简称空间复杂度

它也是问题规模n的函数,记作:S(n)=O(f(n))
通常情况下,鉴于运算空间较为充足,人们都以算法的时间复杂度作为算法优劣的衡量标准。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值