软件技术基础课件.ppt
《软件技术基础课件.ppt》由会员分享,可在线阅读,更多相关《软件技术基础课件.ppt(105页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件技术基础第1页,此课件共105页哦 13.1 13.1 数据结构数据结构 数据结构概述数据结构概述13.1.1数据结构(Data Structure)是指数据元素的组织形式和相互关系。数据结构一般包括以下三方面的内容:1.数据的逻辑结构2.数据的物理结构3.数据的运算第2页,此课件共105页哦数据的逻辑结构 1数据的逻辑结构从逻辑上抽象地反映数据元素间的结构关系,它与数据在计算机中的存储表示方式无关。因此,数据的逻辑结构可以看做是从具体问题抽象出来的数学模型。数据的逻辑结构有两大类:线性结构 线性结构的逻辑特征是:有且仅有一个始端结点和一个终端结点,并且除两个端点结点外的所有结点都有且仅有
2、一个前趋结点和一个后继结点。线性表、堆栈、队列、数组、串等都是线性结构。非线性结构 非线性结构的逻辑特征是:一个结点可以有多个前趋结点和后继结点。如树形结构、图等是非线性结构。第3页,此课件共105页哦数据的物理结构 2数据的物理结构是逻辑结构在计算机存储器里的映像,也称为存储结构。数据的存储结构可用以下四种基本存储方法:顺序存储方法 把逻辑上相邻的结点存储在物理位置上相邻的存储单元里,结点之间的逻辑关系由存储单元的邻接关系来体现。链式存储方法 不要求逻辑上相邻的结点在物理位置上也相邻,结点之间的逻辑关系是由附加的指针字段表示的。索引存储方法 在存储结点信息的同时,还建立附加的索引表。索引表中
3、的每一项称为索引项。索引项由关键字和地址组成,关键字是能唯一标识一个结点的那些数据项,而地址一般是指示结点所在存储位置的记录号。散列存储方法 根据结点的关键字直接计算出该结点的存储地址。第4页,此课件共105页哦 数据的运算 3数据的运算是指对数据施加的操作,数据的每种逻辑结构都有一个运算的集合,常用的运算有检索、插入、删除、更新、排序等。第5页,此课件共105页哦算法 4算法的特点(1)有穷性 一个算法的执行步骤必须是有限的。确定性 算法中的每一个操作步骤的含义必须明确。可行性 算法中的每一个操作步骤都是可以执行的。输入 一个算法一般都要求有一个或多个输入量(个别的算法不要求输入量)。这些输
4、入量是算法所需的初始数据。输出 一个算法至少产生一个输出量,它是算法对输入量的执行结果。第6页,此课件共105页哦算法的描述(2)自然语言 用人的语言描述,该方法易于理解,但容易出现歧义。流程图 用一组特定的几何图形来表示算法,这是最早的算法描述工具。N-S图 用矩形框描述算法,一个算法就是一个矩形框。伪代码 用介于高级语言和人的自然语言之间的文字、符号来描述算法,可以十分容易地转化为高级语言程序。PAD图 全称为问题分析图,使用树形结构描述算法。第7页,此课件共105页哦 算法性能分析(3)衡量一个算法的好坏主要考虑算法的时间特性,一般将语句的重复执行次数作为算法的时间变量。设算法解决的问题
5、的规模为n,例如学生总数等。将一条语句重复执行的次数称为该语句的执行频度,一个算法中所有语句执行频度之和就称为该算法的运行时间。很多情况下无法准确也无必要精确计算出运行时间,而只需求出它关于问题规模n的一个相对的数量级即可,该数量级就称为该算法的时间复杂度,记为O(1),O(n),O(n2)一般地,常用的时间复杂度有如下关系:O(1)=O(log2n)=O(n)=O(nlog2n)=O(n2)1)第8页,此课件共105页哦线性结构线性结构13.1.2顺序表 1线性表是数据结构中最简单且最常用的一种数据结构。其基本特点是:数据元素有序并有限。线性结构的数据元素可排成一个线性队列 当线性表采用顺序
6、存储结构时称之为顺序表。在顺序表中,数据元素按逻辑次序依次放在一组地址连续的存储单元里。由于逻辑上相邻的元素存放在内存的相邻单元里,所以顺序表的逻辑关系蕴含在存储单元的邻接关系中。第9页,此课件共105页哦插入运算(1)(2)删除运算 顺序表的插入运算是指在表的第i个(1in+1)位置上,插入一个新结点y。若插入位置in+1,即插入到表的末尾,那么只要在表的末尾增加一个结点即可;但是若1in,则必须将表中第i个到第n个结点向后移动一个位置,共需移动ni+1个结点。顺序表上插入运算的平均时间复杂度是O(n)。顺序表的删除运算是指将表的第i个(1 i n)结点删去。当i=n时,即删除表尾结点时,操
7、作较为简单;但1i n-l时,则必须将表中第i+1个到第n个共ni个结点向前移动一个位置。顺序表上删除运算的平均时间复杂度是O(n)第10页,此课件共105页哦单链表 2采用顺序表的运算效率较低,需要移动大量的数据元素。而采用链式存储结构的链表是用一组任意的存储单元来存放线性表的数据元素。这组存储单元既可以是连续的,也可以是不连续的,甚至可以是零星分布在内存中的任何位置上,从而可以大大提高存储器的使用效率。在线性链表中,每个元素结点除存储自身的信息外,还要用指针域额外存储一个指向其直接后继的信息(即后继的存储位置:地址)。对链表的访问总是从链表的头部开始,是根据每个结点中存储的后继结点的地址信
8、息,顺链进行的。当每个结点只有一个指针域时,称为单链表 第11页,此课件共105页哦栈与队列 3栈与队列是两种特殊的线性表。即它们的逻辑结构与线性表相同,只是其插入、删除运算仅限制在线性表的一端或两端进行。第12页,此课件共105页哦栈(1)队列(2)栈是仅限于在表的一端进行插入和删除运算的线性表,通常称插入、删除的这一端为栈顶,另一端称为栈底。当表中没有元素时称为空栈。一摞盘子的情形就是栈的生动形态。栈的特点是:后进先出(LIFO Last In,First Out)。如:入栈顺序为 1,2,3,4,5,则出栈顺序为 5,4,3,2,1。队列是一种操作受限的线性表,它只允许在线性表的一端进行
9、数据元素的插入操作,而在另一端才能进行数据元素的删除操作。其允许插入的一端称为队尾,允许删除的另一端称为队头。日常生活中的排队就是队列的实例。特点:先进先出(FIFO First In,First Out)。第13页,此课件共105页哦 树树 13.1.3树结构 1树是一个或多个结点元素组成的有限集合T,且满足条件如下:有且仅有一个结点没有前趋结点,称为根结点(root)。除根结点外,其余所有结点有且只有一个直接前趋结点。包括根结点在内,每个结点可以有多个直接后继结点。第14页,此课件共105页哦二叉树 2二叉树结构也是非线性结构中重要的一类,它是有序树,不是树的特殊结构。在二叉树中,每个结点
10、最多只有两棵子树,一个是左子树,一个是右子树。二叉树有五种基本形态:它可以是空二叉树,根可以有空的左子树或空的右子树,或左、右子树皆为空,如图13-1-4所示。第15页,此课件共105页哦二叉树的存储结构 3顺序存储(1)对完全二叉树而言,可用顺序存储结构实现其存储,该方法是把完全二叉树的所有结点按照自上而下,自左向右的次序连续编号,并顺序存储到一片连续的存储单元中,在存储结构中的相互位置关系即反映出结点之间的逻辑关系。如用维数组Tree来表示完全二叉树,则数组元素Tree(i)对应编号为i的结点。第16页,此课件共105页哦链式存储(2)顺序存储容易造成空间浪费,并具有顺序存储结构固有的缺点
11、:添加、删除伴随着大量结点的移动。对于一般的二叉树,较好的方法是用二叉链表来表示。表中每个结点都具有三个域:左指针域Lchild、数据域Data、右指针域Rchild。其中,指针Lchild和Rchild分别指向当前结点的左孩子和右孩子。结点的形态如下:LchildDataRchild第17页,此课件共105页哦链式存储(2)第18页,此课件共105页哦二叉树的遍历 4所谓遍历,是指按某种次序,依次对某结构中的所有数据元素访问且仅访问一次。由于二叉树结构的非线性特点,它的遍历远比线性结构复杂,其算法都是递归的。有三种遍历方式:先序遍历 访问根结点;先序遍历左子树;先序遍历右子树。对图13-1-
12、7所示的二叉树,先序遍历序列为:A B D E C F。中序遍历 中序遍历左子树;访问根结点;中序遍历右子树。对图13-1-7所示的二叉树,中序遍历序列为:D B E A F C。后序遍历 后序遍历左子树;后序遍历右子树;访问根结点。对图13-1-7所示的二叉树,后序遍历序列为:D E B F C A。第19页,此课件共105页哦 图结构图结构13.1.4 图的概念 1图是一种重要的、比树更复杂的非线性数据结构。在树结构中,某结点只能与其上层的一个结点(父结点)相联系,并且根结点还没有父结点,每个结点与同一层结点间没有任何横向联系;而在图结构中,数据元素之间的联系是任意的,每个元素可以和其他元
13、素相联系,从这个意义上来讲,树是一种特殊形式的图。图包括一些点和边,故一个图G由点V(G)和边E(G)这两个集合组成 第20页,此课件共105页哦无向图G1(1)G1=G1=(V1V1,E1E1)V1=V1=1 1,2 2,3 3,4 4,5 5E1=E1=(1 1,2 2),(),(1 1,3 3),(),(3 3,4 4),(),(4 4,5 5)在无向图中,边没有方向:(在无向图中,边没有方向:(1 1,3 3)也可写成(也可写成(3 3,1 1)。)。第21页,此课件共105页哦(2)有向图G2 G2=G2=(V2V2,E2E2)V2=V2=1 1,2 2,3 3,4 4,5 5,6
14、6E2=E2=1,2,在有向图中,边有方向:在有向图中,边有方向:不能写成不能写成。第22页,此课件共105页哦 与图相关的一些术语和概念(3)邻邻接点接点 有有边边相相连连的点。的点。在无向在无向图图中,互中,互邻邻的两的两边侧边侧互互为邻为邻接点,若有(接点,若有(V2V2,V3V3),),则则V3V3和和V2V2互互为邻为邻接点;接点;在有向在有向图图中,若有中,若有V2V3,则则V3V3为为V2V2的的邻邻接点,但接点,但V2V2不一定是不一定是V3V3的的邻邻接点,除非也存在接点,除非也存在 V3V2。顶顶点的度点的度 与每个与每个顶顶点相点相连连的的边边数。数。在无向在无向图图中,
15、以中,以该顶该顶点点为为一个端点的一个端点的边边的条数。的条数。在有向在有向图图中,有入度(中,有入度(进进的的边边数)和出度(出的数)和出度(出的边边数)之分。数)之分。路径路径 某一某一顶顶点到达另一点到达另一顶顶点所点所经过经过的的顶顶点序列。两个点序列。两个顶顶点之点之间间可可以有多条路径。以有多条路径。路径上的路径上的边边的数目称的数目称为为路径的路径的长长度。度。网网络络 如果如果图图G(VG(V,E)E)中每一条中每一条边边都都赋赋有反映有反映这这条条边边的某种特性的的某种特性的数数值值,则则称此称此图为图为一个网一个网络络(图图13-1-1013-1-10),称与),称与边边相
16、关的数相关的数值为该值为该边边的的权权。第23页,此课件共105页哦图的存储结构 2邻接矩阵(1)基本思想:一个基本思想:一个图图由由顶顶点集合、点集合、边边集合(集合(顶顶点偶点偶对对集合,反集合,反映映顶顶点点间间关系)关系)组组成成 设设G=G=(V V,E E)是有)是有n n(n1n1)个)个顶顶点的无向点的无向图图,则则:一一维维数数组组Vn=Vn=顶顶点集合点集合;G G的的邻邻接矩接矩阵阵是一个二是一个二维维数数组组AnnAnn第24页,此课件共105页哦邻接表(2)为为了克服了克服邻邻接矩接矩阵阵的不足,可以采用的不足,可以采用动态动态的的链链式存式存储结储结构来保存构来保存
17、图图信息,信息,这这就就是是邻邻接表。其基本思想是:接表。其基本思想是:对对每一个每一个顶顶点建立一个点建立一个单链单链表。表。第第i i个个单链单链表中存放表中存放顶顶点点i i的所有的所有邻邻接接顶顶点。点。第第i i个个单链单链表的表的头结头结点中,存放点中,存放顶顶点点i i的信息的信息ViVi。第25页,此课件共105页哦邻接表(2)3 32 2 2 24 4 5 56 61 11 1 5 5 6 6 3 3ll3 3 4 4 1 12 24 43 36 65 5第26页,此课件共105页哦 线性表的查找线性表的查找 13.1.5顺序查找 1查查找(找(SearchSearch),又
18、称),又称检检索,就是在一个含有索,就是在一个含有n n个数据元素的集合中,根个数据元素的集合中,根据一个据一个给给定的定的值值k k,找出其关,找出其关键键字字值值等于等于给给定定值值k k的数据元素。的数据元素。从第从第1 1个数据元素开始,逐个把数据元素的关个数据元素开始,逐个把数据元素的关键键字字值值与与给给定定值值比比较较,若,若找到某数据元素的关找到某数据元素的关键键字字值值与与给给定定值值相等,相等,则查则查找成功;若遍找成功;若遍历历整个整个线线性性表都未找到,表都未找到,则查则查找失找失败败。第27页,此课件共105页哦二分法查找 2当当顺顺序存序存储储的的线线性表已性表已经
19、经按关按关键键字有序字有序时时,可以使用二分法,可以使用二分法查查找。二分法找。二分法查查找找的基本思路是:由于的基本思路是:由于查查找表中的数据元素按关找表中的数据元素按关键键字有序(假字有序(假设为设为增序),增序),则查则查找找时时不必逐个不必逐个顺顺序比序比较较,而先与中,而先与中间间数据元素的关数据元素的关键键字比字比较较。若相等,。若相等,则查则查找成功;找成功;若不等,即把若不等,即把给给定定值值与中与中间间数据元素的关数据元素的关键键字字值值比比较较,若,若给给定定值值小于中小于中间间数据元数据元素的关素的关键键字字值值,则则在前半部分在前半部分进进行二分行二分查查找,否找,否
20、则则在后半部分在后半部分进进行二分行二分查查找。找。这这样样,每,每进进行一次比行一次比较较,就将,就将查查找区找区间缩间缩短短为为原来的一半。原来的一半。容易容易证证明,在明,在长长度度为为n n的有序的有序顺顺序表中序表中进进行二分行二分查查找的找的查查找次数不超找次数不超过过 log2n+1 log2n+1 次(其中次(其中 代表取整)。代表取整)。第28页,此课件共105页哦分块查找 3分分块查块查找找是介于是介于顺顺序序查查找与二分法找与二分法查查找之找之间间的一种的一种查查找方法,又称索引找方法,又称索引顺顺序序查查找。它的基本思想是:找。它的基本思想是:分分块块 将数据划分将数据
21、划分为为若干数据若干数据块块,数据在,数据在块块内无序,但内无序,但块间块间有序。有序。也就是也就是说说,第一,第一块块内的最大数据比后内的最大数据比后继继所有所有块块内的所有数据都小(假内的所有数据都小(假设设按数据按数据递递增有序),后面的每一增有序),后面的每一块块内的所有数据都大于它前面的所内的所有数据都大于它前面的所有有块块的最大数据,同的最大数据,同时时又小于后又小于后继继所有所有块块内的所有数据。内的所有数据。查查找找 分两步分两步进进行。行。块间块间:建立一个各:建立一个各块块最大关最大关键键字字值值表,将待表,将待查查数据在数据在该该表中按二分法表中按二分法或或顺顺序序查查找
22、找进进行,通行,通过块间查过块间查找确定数据所在找确定数据所在块块。用二分法可以提高。用二分法可以提高块间查块间查找的效率。找的效率。块块内:在内:在块块内按内按顺顺序序查查找方式直接找方式直接查查找元素。找元素。第29页,此课件共105页哦 内排序内排序 13.1.6插入法排序 1排序又称排序又称为为分分类类,它是数据,它是数据处处理中理中经经常使用的一种运算,是将一常使用的一种运算,是将一组组数据元素数据元素(记录记录)按其排序)按其排序码进码进行行递递增或增或递递减的运算操作。排序分内排序和外排序。减的运算操作。排序分内排序和外排序。内排序内排序 整个排序运算在内存中整个排序运算在内存中
23、进进行。行。把把n n个数据元素的序列分成两部分,一个是已排好序的有序部分,另个数据元素的序列分成两部分,一个是已排好序的有序部分,另一个是未排好序的未排序部分;把未排好序的元素逐个与已排好序的一个是未排好序的未排序部分;把未排好序的元素逐个与已排好序的元素比元素比较较,并插入到有序部分的合适位置,最后得到一个新的有序序,并插入到有序部分的合适位置,最后得到一个新的有序序列。列。第30页,此课件共105页哦选择排序 2每一每一轮轮排序中,将第排序中,将第i i个元素与从序列第个元素与从序列第i+1i+1到到n n的的n-i+1(i=1,2,3,n-n-i+1(i=1,2,3,n-1)1)个元素
24、中个元素中选选出的、出的、值值最小的一个元素最小的一个元素进进行比行比较较,若,若该该最小元素比第最小元素比第i i个个元素小,元素小,则则将两者交将两者交换换。i i从从1 1开始,重复此开始,重复此过过程,直到程,直到i=n-1i=n-1。简单简单地地说说,通,通过过交交换换位置,位置,选选最小的放在第一,次小的放在第二,最小的放在第一,次小的放在第二,以此以此类类推,直到元素序列的最后推,直到元素序列的最后为为止。止。第31页,此课件共105页哦冒泡排序冒泡排序 3冒泡法排序需要冒泡法排序需要进进行行n n 1 1轮轮的排序的排序过过程。程。第一第一轮轮:从:从a1a1开始,两两比开始,
25、两两比较较aiai、ai+1ai+1(i=1i=1,2 2,n n 1 1)的大小,)的大小,若若aiai+1aiai+1,则则交交换换aiai与与ai+1ai+1。当第一。当第一轮轮完成完成时时,最大元素将被交,最大元素将被交换换到最到最后一位(第后一位(第n n位)。位)。第二第二轮轮:仍然从:仍然从a1a1开始,两两比开始,两两比较较aiai、ai+1ai+1(i=1i=1,2 2,n n 2 2)的大)的大小,注意此小,注意此时时的的处处理范理范围围从第一从第一轮轮的整个序列的整个序列n n个数据元素比个数据元素比较较n n 1 1次次(i=1i=1,2 2,n n 1 1),),变变
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件技术 基础 课件
限制150内