计算机软件技术基础 第3版 课件 第2章 数据结构概述_第1页
计算机软件技术基础 第3版 课件 第2章 数据结构概述_第2页
计算机软件技术基础 第3版 课件 第2章 数据结构概述_第3页
计算机软件技术基础 第3版 课件 第2章 数据结构概述_第4页
计算机软件技术基础 第3版 课件 第2章 数据结构概述_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章数据结构与

算法概述前言计算机是一门研究用计算机进行信息表示和处理的科学。这里面涉及到两个问题:信息的表示,信息的处理。信息的表示和组织又直接关系到处理信息的程序的效率。

随着应用问题的不断复杂,使许多系统程序和应用程序的规模很大,结构又相当复杂。因此,必须分析待处理问题中的对象的特征及各对象之间存在的关系,这就是数据结构这门课所要研究的问题。

数据结构与算法是介于数学、计算机硬件、计算机软件三者之间的核心技术,不仅是一般程序设计的基础,而且是设计和实现编译程序、操作系统、数据库系统及其他系统程序和大型应用程序的重要基础。2.1数据结构基本知识2.1.1数据结构的概念2.1.2数据结构的逻辑结构与存储结构4数据结构的例子姓名电话号码陈四。。。。。例1:电话号码查询系统

设有一个电话号码薄,它记录了N个人的名字和其相应的电话号码,假定按如下形式安排:(a1,b1),(a2,b2),…(an,bn),其中ai,bi(i=1,2…n)

分别表示某人的名字和电话号码。本问题是一种典型的表格问题。如表1-1,数据与数据成简单的一对一的线性关系。表1-1

线性表结构例2:磁盘目录文件系统

磁盘根目录下有很多子目录及文件,每个子目录里又可以包含多个子目录及文件,但每个子目录只有一个父目录,依此类推:本问题是一种典型的树型结构问题,如图1-1

,数据与数据成一对多的关系,是一种典型的非线性关系结构—树形结构。图1-1

树形结构例3:交通网络图

从一个地方到另外一个地方可以有多条路径。本问题是一种典型的网状结构问题,数据与数据成多对多的关系,是一种非线性关系结构。佛山惠州广州中山东莞深圳珠海图1-2

网状结构数据结构主要研究诸如线性结构,树形结构及图形结构等非数值性数学模型在计算机中的表示及操作。82.1.1数据结构的基本概念数据数据元素数据对象数据结构9

数据(Data)

数据是信息的载体对客观事物的符号表示能输入到计算机中能被计算机加工处理数据的形式可以是整数,实数,字符,图像,声音…10数据元素(dataelement)数据元素(DataElement)

:是数据的基本单位,在程序中通常作为一个整体来进行考虑和处理。一个数据元素可由若干个数据项(DataItem)组成。数据项是数据的不可分割的最小单位。数据项是对客观事物某一方面特性的数据描述。11数据项学号姓名性别出生日期联系电话入学成绩数据元素数据对象(DataObject)是性质相同的数据元素的集合,是数据的一个子集。如字符集合C={‘A’,’B’,’C,…}。12数据、数据元素与数据对象关系13数据数据元素数据对象2.1.2

数据结构的逻辑结构与物理结构数据结构指同一数据对象中各个数据元素间存在的一种或多种特定关系的集合主要研究:数据元素之间固有的逻辑关系——数据逻辑结构;数据元素及关系在计算机内的表示——数据物理结构;对数据结构的操作——算法。14

数据元素之间的关系可以是元素之间代表某种含义的自然关系,也可以是为处理问题方便而人为定义的关系,这种自然或人为定义的“关系”称为数据元素之间的逻辑关系,相应的结构称为逻辑结构。数据元素之间的逻辑结构有四种基本类型①

集合:结构中的数据元素除了“同属于一个集合”外,没有其它关系。②线性结构:结构中的数据元素之间存在一对一的关系。③

树型结构:结构中的数据元素之间存在一对多的关系。④图状结构或网状结构:结构中的数据元素之间存在多对多的关系。15物理结构-存储结构数据结构在计算机内存中的存储包括数据元素的存储和元素之间的关系的表示。元素之间的关系在计算机中有两种不同的表示方法:顺序表示和非顺序表示。由此得出两种不同的存储结构:顺序存储结构和链式存储结构。顺序存储结构:用数据元素在存储器中的相对位置来表示数据元素之间的逻辑结构(关系)。

链式存储结构:在每一个数据元素中增加一个存放另一个元素地址的指针(pointer),用该指针来表示数据元素之间的逻辑结构(关系)。例:设有数据集合A={3.0,2.3,5.0,-8.5,11.0},两种不同的存储结构。顺序结构:数据元素存放的地址是连续的;链式结构:数据元素存放的地址是否连续没有要求。数据的逻辑结构和物理结构是密不可分的两个方面,一个算法的设计取决于所选定的逻辑结构,而算法的实现依赖于所采用的存储结构。在C语言中,用一维数组表示顺序存储结构;用结构体类型表示链式存储结构。数据结构的三个组成部分:逻辑结构:数据元素之间逻辑关系的描述

D_S=(D,S)存储结构:数据元素在计算机中的存储及其逻辑关系的表现称为数据的存储结构或物理结构。数据操作:对数据要进行的运算。本课程中将要讨论的三种逻辑结构及其采用的存储结构如图所示。数据的逻辑结构非线性结构集合图状结构有向图无向图树形结构一般树二叉树线性结构一般线性表线性表推广广义表数组串受限线性表栈和队列线性表树图顺序存储结构链式存储结构复合存储结构逻辑结构物理结构(3)数据的操作

数据的操作是在数据的逻辑结构上定义的操作算法。数据结构的主要运算包括:⑴建立(Create)一个数据结构;⑵消除(Destroy)一个数据结构;⑶从一个数据结构中删除(Delete)一个数据元素;⑷把一个数据元素插入(Insert)到一个数据结构中;⑸对一个数据结构进行访问(Access);⑹对一个数据结构(中的数据元素)进行修改(Modify);⑺对一个数据结构进行排序(Sort);⑻对一个数据结构进行查找(Search)。

202.1.3数据类型与抽象数据类型数据类型抽象数据类型21数据类型是一个值的集合和定义在这个集合上的一组操作的总称。抽象数据类型(ADT)指一个数学模型以及定义在该模型上的一组操作。特点仅取决于逻辑特性,而与计算机内部如何表示和实现无关。抽象数据类型的分类原子类型:值不可再分固定聚合类型:成分数目固定可变聚合类型:成分数目可变抽象数据类型的定义三元组表示:ADT=(D,S,P)ADT抽象数据类型名{数据对象D:<数据对象的定义>数据关系S:<数据关系的定义>基本操作P:<基本操作的定义>}ADT抽象数据类型名2.2算法与算法分析2.2.1算法的概念2.2.2算法分析262.2.1算法概念为解决特定问题所采用的步骤描述,它是指令的有限序列,其中每条指令表示一个或多个操作。27算法特性有穷性:算法执行有限步后,自动停止确定性:含义确切,无二义性可行性:每个基本操作均可实现输入:零个或多个输入输出:至少一个输出28算法描述自然语言流程图类语言高级语言29BEGINi:=1;s:=0;WHILE(i<=10)DO[s:=s+i;i:=i+1;]END类语言流程图2.2.2时间复杂度和空间复杂度能完成任务不一定是最好的算法,不同算法可能用的时间,空间和效率是不同的。一个算法的优劣可以用时间复杂度与空间复杂度来衡量。算法分析内容时间复杂度空间复杂度算法复杂度的数学表示用数学符号O表示,n为问题规模例:O(1);O(nk);O(en)302.2.2时间复杂度和空间复杂度算法的优劣用频度和时间复杂度衡量语句频度某语句执行的次数,记作F(n)时间复杂度以语句频度最大的语句度量31时间复杂度举例

for(i=1;i<=n;i++)for(j=1;j<=n;j++){

c[i][j]=0;

for(k=1;k<=n;k++)

c[i][j]+=a[i][k]*b[k][j]

}32n2n3语句频度f(n)=n3+n2时间复杂度O(n3)常见的时间复杂度O(1)O(n)O(n2)O(log2n)O(nlog2n)O(2n).....33Tn2nnlogn2a·2n+b·n3+c·n2+d·n·log2(n)+e·n+fa<>0时,时间复杂度就是O(2n);a=0,b<>0时间复杂度就是O(n3);a,b=0,c<>0时间复杂度就是O

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论