数据结构-基于C语言的描述第2版课件 第1章 绪论_第1页
数据结构-基于C语言的描述第2版课件 第1章 绪论_第2页
数据结构-基于C语言的描述第2版课件 第1章 绪论_第3页
数据结构-基于C语言的描述第2版课件 第1章 绪论_第4页
数据结构-基于C语言的描述第2版课件 第1章 绪论_第5页
已阅读5页,还剩59页未读, 继续免费阅读

下载本文档

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

文档简介

DATASTRUCTUREDATASTRUCTUREDataStructureBYPENGBO

使用计算机求解任何问题都离不开程序设计,而程序设计实质就是数据表示和数据处理。数据表示核心任务是数据结构设计;数据处理的核心任务是算法设计。数据结构课程主要讨论数据表示和数据处理的基本问题。第1章主要内容绪论第章1《数据结构–基于C语言的描述》(第2版)-清华大学出版社DATASTRUCTUREDATASTRUCTUREDataStructureBYPENGBO第1章主要内容1.1

数据结构的范畴1.2

数据结构发展概况1.3

数据结构相关概念1.4

算法描述与算法分析绪论第章1《数据结构–基于C语言的描述》(第2版)-清华大学出版社1.1数据结构的范畴

数据结构起源于程序设计。计算机的处理对象已从简单纯数值性数据发展到非数值性和具有一定结构的数据,数据量也越来越大,这就给程序设计带来一个问题:应该如何组织待处理的数据以及数据之间的关系。(1)构建数学模型(2)设计求解算法(3)编写程序调试1.1数据结构的范畴

这类问题涉及的数据元素之间关系一般无法用数学方程描述。解决此类问题关键已不再是分析数学和计算方法,而是设计出合适的数据结构。

这类问题处理对象通常是纯数值性数据,应用范围只局限于科学和工程计算。程序设计者主要精力集中于程序设计技巧,不需重视数据结构。

数值计算问题非数值性问题1.1.1计算机处理问题分类1968年,DonaldE.Knuth教授在《计算机程序设计艺术-基本算法》中阐述了数据逻辑和存储结构以及操作,开创了数据结构的最初体系。1976年,图灵奖获得者Niklaus.Wirth给出了一个著名公式:数据结构+算法=程序。由此可知:数据结构和算法是构成程序的两个重要组成部分。

1.1.2非数值性问题求解1.1数据结构的范畴

为了更好地进行程序设计,只有对数据进行研究,分析数据特性及关系,合理组织及存储数据,设计算法,才能有效地解决问题。

学习数据结构更重要的是要去学习一种能力:把现实问题转化为计算机能识别的语言表示。1.1数据结构的范畴例1-1

学生情况管理问题。

姓名性别年龄籍贯班别成绩数学物理化学外语孙一男18北京600395909296钱二女20上海600290958580常三女19长沙600485908075吴四男19湖北600185807590………………………………………………1.1.2非数值性问题求解

学生情况登记表是一个数据结构。表中每个学生的情况为一个记录。

在这种数据结构中,计算机处理的数据之间存在的是一种“一个对一个”的简单线性关系,称为线性的数据结构。例1-2

人-机对弈问题。

(a)井字棋的一个格局(b)对弈树的局部1.1数据结构的范畴1.1.2非数值性问题求解

该从该格局出发可以派生出五个新格局,从新格局出发,还可以再派生出新格局,

如图(b)。

在这种数据结构中,计算机处理的数据之间存在的是一种“一个对多个”的层次关系,称为树的数据结构。7个城市之间通信线路的数学模型。其中:图中圆圈表示一个城市,两个圆圈间的连线表示对应城市之间的通信线路,连线上的数值表示该通信线路的造价。1.1数据结构的范畴1.1.2非数值性问题求解例1-3

城市最小造价通信网问题。

(a)7个城市预算造价通信线路总造价是23(b)7个城市最小造价通信线路总造价是9

在这种数据结构中,计算机处理的数据之间存在的是一种“多个对多个”的关系,称为图的数据结构。1.1数据结构的范畴1.1.2非数值性问题求解

因此,简单说来,数据结构是一门研究非数值性计算的程序设计问题中计算机的操作对象,以及它们之间的关系和操作等的学科。

描述这些非数值问题的模型已经不再是数学方程,而是线性表、树、图之类的数据结构。在抽象出问题的模型之后,数据结构的任务还包括对这个模型进行求解。1.2数据结构发展的概况

数据结构随着程序设计的发展而发展。程序设计经历了三个阶段:无结构阶段、结构化阶段和面向对象阶段;相应地,数据结构的发展也经历了这三个阶段:无结构阶段、结构化阶段和面向对象阶段。1.2数据结构发展的概况1.2.1无结构阶段20世纪40~60年代,计算机的应用主要是针对科学计算,程序设计技术以机器语言及汇编语言为主,程序处理的数据是纯粹的数值,数据之间的关系主要是数学公式或数学模型。

这一阶段,在人类自然语言与计算机编程语言之间存在着巨大的鸿沟,程序设计属于面向计算机的程序设计,设计人员关注的重心是使程序尽可能地被计算机接受并按指令正确执行,至于程序能否让人理解并不重要。1.2数据结构发展的概况1.2.2结构化阶段20世纪60~80年代,计算机开始广泛应用于非数值处理领域,数据表示成为程序设计的重要问题,基于程序设计规范化的重要性,提出了程序结构模块化,数据结构及抽象数据类型就是在这种背景下形成的。

随着软件系统的规模越来越大、复杂性不断增加,人们不得不对结构化技术进行重新评价。软件系统的实现依赖于关键数据结构,如果这些关键数据结构的一个或几个有所改变,则涉及到整个系统,甚至导致整个系统彻底崩溃。

问题世界的相关实体被视为一个对象,由属性和方法构成,属性用以描述实体状态或特征,方法用以改变实体状态或描述实体行为。一组具有相同属性和方法的对象集合抽象为类,每个具体对象都是类的一个实例。1.2数据结构发展的概况1.2.3面向对象阶段20世纪80年代初,出现面向对象技术(先是面向对象程序设计),它是目前最流行的程序设计技术。类●

属性●方法

数据结构主要强调两个方面的内容:一是数据之间的关系,另一个是针对这些关系的基本操作。数据及其相互关系构成了对实体状态的描述,针对数据元素之间关系的操作构成了对实体行为的描述。数据结构●

数据间的关系●基本操作对应

这两方面实际上蕴涵着面向对象思想:类重点描述实体的状态与行为,而数据结构重点描述数据之间的关系及其基本操作。1.3数据结构相关概念●

数据●数据元素●数据对象●数据关系●数据结构●

逻辑结构●物理结构●数据类型●抽象数据类型1.3数据结构相关概念1.3.1数据概念

信息的载体,在计算机科学中指所有能够输入到计算机中并能被计算机程序识别和处理的符号集合。数据

例如:一个利用数值分析方法求解代数方程的程序,其处理对象是整数和实数。1.3数据结构相关概念1.3.1数据概念

数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。也称元素、结点、顶点、记录。数据元素

例如:学生情况管理问题。

姓名性别年龄籍贯班别成绩数学物理化学外语孙一男18北京600395909296钱二女20上海600290958580常三女19长沙600485908075吴四男19湖北600185807590………………………………………………

每个学生信息就是一个数据元素。1.3数据结构相关概念1.3.1数据概念

性质相同的数据元素的集合。它是数据的一个子集。数据对象

例如:整数数据对象的集合可以表示为N={0,±1,±2,……};大写字母字符数据对象的集合可以表示为C={'A','B',……,'Z'};1.3数据结构相关概念1.3.1数据概念

在数据对象中各元素之间存在着某种关系,反映了数据对象中元素所固有的一种结构;在数据处理领域,通常把数据之间的这种固有的关系简单地用前驱和后继来描述。数据关系

例如:家庭族谱中,数据对象是家庭所有成员,对某个成员描述是一个元素,各元素间存在血缘关系;父亲是儿子的前驱,儿子是父亲的后继。1.3数据结构相关概念1.3.2结构概念

相互之间存在一定关系的元素集合。在任何问题中,元素都不是孤立存在,而是存在着某种关系,这种元素相互之间的关系称为结构。数据结构数据结构研究的内容包括:数据的逻辑结构和数据的物理(存储)结构。

在集合中,只有元素,它们之间除了“同属于一个集合”外别无其他的关系,即R={}。集合是数据结构的一种特例。

在线性结构中,除第一个元素外其他各元素有唯一前驱;除最后一个元素外其他各元素有唯一后继。元素间存在一个对一个的关系。

在树结构中,除了一个根元素(结点)外其他各元素(结点)有唯一前驱;所有元素(结点)都可有多个后继。元素之间存在一个对多个的关系。

在图状或网状结构中,各元素可以有多个前驱或多个后继。元素之间存在多个对多个的关系。根据元素之间逻辑关系的不同特特性,通常有四类基本逻辑结构。1.3数据结构相关概念1.3.2结构概念

对操作对象的一种数学描述,即从操作对象抽象出来的数学模型。结构定义中的“关系”描述的是元素之间的逻辑关系,与数据的存储无关,是独立于计算机的。逻辑结构集合线性结构树结构图或网结构1.3数据结构相关概念1.3.2结构概念逻辑结构

例1-4

一周七天数据的逻辑结构。

该数据的逻辑结构B可以用一个元素集合D和定义在该集合上的一个关系R来表示。B=(D,R)D={Sun,Mon,Tue,Wed,Thu,Fri,Sat}R={<Sun,Mon>,<Mon,Tue>,<Tue,Wed>,<Wed,Thu>, <Thu,Fri>,<Fri,Sat>}SunMonTueWedThuFriSat一周七天数据的逻辑结构1.3数据结构相关概念1.3.2结构概念

又称存储结构,是数据及其逻辑结构在计算机中的表示;即除了存储元素外,还必须隐式或显式地存储元素间的逻辑关系。物理结构

元素之间关系在计算机中有两种不同表示方法,由此得到两种不同存储结构:顺序存储结构和链式存储结构。1.3数据结构相关概念1.3.2结构概念

又称存储结构,是数据及其逻辑结构在计算机中的表示;即除了存储元素外,还必须隐式或显式地存储元素间的逻辑关系。物理结构

●

顺序存储结构:用元素在存储器中的相对位置来表示元素之间的逻辑关系。通常借助程序语言的数组来描述。

元素之间的逻辑关系由存储单元的邻接关系来体现,逻辑上相邻的元素存储在物理位置上相邻的存储单元里。0200020436例如:Y=3+61.3数据结构相关概念1.3.2结构概念

又称存储结构,是数据及其逻辑结构在计算机中的表示;即除了存储元素外,还必须隐式或显式地存储元素间的逻辑关系。物理结构

●

链式存储结构:在每个元素中增加一个存放地址的指针,用此表示元素之间的逻辑关系。通常借助于程序语言指针类型描述。

元素之间的逻辑关系由附加的指针字段表示,并不要求逻辑上相邻的元素在物理位置上相邻。例如:Y=3+60400060036040006040404…1.3数据结构相关概念1.3.2结构概念

数据的逻辑结构和物理结构是密切相关的两个方面,一般来说:算法的设计取决于数据的逻辑结构,而算法的实现依赖于指定的存储结构。1.3数据结构相关概念1.3.3类型概念

明显或隐含地规定了在程序执行期间变量或表达式所有可能取值的范围,以及在这些值上允许进行的操作。数据类型

例如:C语言中的int类型,其值集为某个区间上的整数,定义在其上的操作为:加、减、乘、除和取模等算数运算。

简称ADT(AbstractDataType)是指一个数据模型以及定义在该模型上的一组操作。可以理解为对数据类型的进一步抽象。

抽象数据类型1.3数据结构相关概念1.3.3类型概念

ADT的定义仅取决于它的一组逻辑特性,而与其在计算机的内部如何表示和实现无关,即不论其内部结构如何变化,只要它的数学特性不变,都不影响其外部的使用。

ADT的提出是为了提高软件的复用率。

简称ADT(AbstractDataType)是指一个数据模型以及定义在该模型上的一组操作。可以理解为对数据类型的进一步抽象。

抽象数据类型1.3数据结构相关概念1.3.3类型概念

数据类型和ADT的区别:

数据类型是一个值的集合和定义在这个值集上一组操作的总称(高级语言中已实现)。

ADT是对数据类型的一种抽象,指用户在设计软件系统时自定义的数据结构以及定义在该结构上的一组操作。1.3数据结构相关概念1.3.3类型概念ADT抽象数据类型名{

数据对象(Data):<数据对象的定义>

逻辑关系(Relation):<逻辑关系的定义>

基本操作(Operation):基本操作名1:初始条件:<初始条件描述>

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

基本操作名2:初始条件:<描述操作执行之前数据结构和参数应满足的条件>

操作结果:<说明操作正常完成后数据结构的变化状况和应返回的结果>

}ADT抽象数据类型名ADT描述格式

一个ADT的定义不涉及其实现细节,在形式上可繁可简。ADT描述格式ADTComplex{Data:

D={e1,e2|e1,e2

RealSet}Relation:

R={<e1,e2>|e1是复数的实数部分,e2是复数的虚数部分}Operation:

InitComplex(&z,v1,v2)

初始条件:无操作结果:构造并返回复数z,其实部和虚部分别赋予参数v1和v2的值

GetReal(z,&RealPart)初始条件:复数z已经存在。操作结果:用RealPart返回复数z的实部值。…………}ADTComplex

从定义角度看,抽象数据类型中的每一个操作都应该力求功能单一且明确,并减少各操作的功能重叠。

从实现角度看,各个模块之间必须有严格约定的接口,因此首先需要利用固有数据类型表示并描述上述定义的各个操作。1.3数据结构相关概念1.3.3类型概念

例1-6

复数的ADT定义。

1.4算法描述及算法分析

对数据施加各种操作即为数据运算,而数据运算通过算法描述。如果将问题看作函数,那么算法就能把输入转化为输出。解决一个问题可以有多种算法,但一个给定算法只能解决一个特定问题。1.4.1算法概念

算法是对特定问题求解步骤的一种描述,是为了解决一个或一类问题给出的一个确定的、有限长的操作序列。算法特性(1)有穷性(Limitedness)(2)确定性(Definiteness)(3)可行性(Feasibleness)(5)有输出(Output)(4)有输入(Input)

对于任意一组合法的输入值,在执行有穷步骤之后一定能结束,且每个步骤都能在有限时间内完成。1.4算法描述及算法分析例如:Sinx=x/1-x3/3!+x5/5!-x7/7!+…不是算法。又如:N!=1×2×3×…×N是算法。(1)有穷性(Limitedness)(2)确定性(Definiteness)(3)可行性(Feasibleness)(5)有输出(Output)(4)有输入(Input)

对每种情况下执行操作必须有确切规定,使执行者明确其含义及执行方法,且在任何条件下只有一个入口和一个出口。1.4.1算法概念

算法是对特定问题求解步骤的一种描述,是为了解决一个或一类问题给出的一个确定的、有限长的操作序列。算法特性1.4算法描述及算法分析例如:菜谱中的“加少许盐”。该说法不严格,不是算法。(1)有穷性(Limitedness)(2)确定性(Definiteness)(3)可行性(Feasibleness)(5)有输出(Output)(4)有输入(Input)

算法中描述的所有操作都必须足够基本,并且都是可以通过已实现的基本运算执行有限次来实现的。

算法是对特定问题求解步骤的一种描述,是为了解决一个或一类问题给出的一个确定的、有限长的操作序列。算法特性例如:如果b=0,执行a/b,则该式不能够有效执行。1.4.1算法概念1.4算法描述及算法分析(1)有穷性(Limitedness)(2)确定性(Definiteness)(3)可行性(Feasibleness)(5)有输出(Output)(4)有输入(Input)

作为算法加工对象,通常体现为算法中一组变量;有些输入量需在执行过程中输入,而有些输入量被嵌入算法中。

算法是对特定问题求解步骤的一种描述,是为了解决一个或一类问题给出的一个确定的、有限长的操作序列。算法特性例如:求两个整数m和n的最大公约数,此时需要输入m和n的值。1.4.1算法概念1.4算法描述及算法分析(1)有穷性(Limitedness)(2)确定性(Definiteness)(3)可行性(Feasibleness)(5)有输出(Output)(4)有输入(Input)

输出是一组与“输入”有确定关系的量值,是算法进行信息加工后得到的结果,这种确定关系即为算法的功能。

算法是对特定问题求解步骤的一种描述,是为了解决一个或一类问题给出的一个确定的、有限长的操作序列。算法特性例如:求两个整数m和n的最小公倍数,其结果即为算法的输出。1.4.1算法概念1.4算法描述及算法分析

算法是对特定问题求解步骤的一种描述,是为了解决一个或一类问题给出的一个确定的、有限长的操作序列。算法特性

算法和程序不同。程序是对一个算法使用某种程序设计语言的具体实现,原则上,任何一个算法都可以用任何一种程序设计语言实现。算法的有穷性意味着不是所有的计算机程序都是算法。

1.4.1算法概念1.4算法描述及算法分析(1)有穷性(Limitedness)(2)确定性(Definiteness)(3)可行性(Feasibleness)(5)有输出(Output)(4)有输入(Input)

算法的设计首先要满足五个重要特性,此外还需要达到四个目标。

设计要求(1)正确性(Correctness)(2)可读性(Readability)(3)鲁棒性(Robustness)(4)高效性(High-Efficiency)没有语法错误;对于任何合法的输入数据能够得出符合要求的结果。1.4.1算法概念1.4算法描述及算法分析

算法的设计首先要满足五个重要特性,此外还需要达到四个目标。

设计要求(1)正确性(Correctness)(2)可读性(Readability)(3)鲁棒性(Robustness)(4)高效性(High-Efficiency)易于阅读和交流,帮助人们理解算法,便于算法交流与推广。

1.4.1算法概念1.4算法描述及算法分析

算法的设计首先要满足五个重要特性,此外还需要达到四个目标。

设计要求(1)正确性(Correctness)(2)可读性(Readability)(3)鲁棒性(Robustness)(4)高效性(High-Efficiency)

具有抵抗非法输入的能力,即对错误的输入能识别并做出处理,而不是产生错误动作或陷入瘫痪。1.4.1算法概念1.4算法描述及算法分析

算法的设计首先要满足五个重要特性,此外还需要达到四个目标。

设计要求(1)正确性(Correctness)(2)可读性(Readability)(3)鲁棒性(Robustness)(4)高效性(High-Efficiency)一个“好”算法应该具有较短的执行时间并占用较少的辅助空间。1.4.1算法概念1.4算法描述及算法分析1.4.1算法概念1.4算法描述及算法分析

算法的设计规范能够帮助初学者养成良好的算法设计习惯。设计规范(1)算法说明(2)注释说明(3)合理安排输入和输出(4)适当的错误处理

包括存储结构;算法功能、参数含义和输入输出属性、全局或外部定义变量及其作用、初值、参数和引用的全局或外部变量的条件限制等。

(5)合理选用语句和算法结构1.4.1算法概念1.4算法描述及算法分析

算法的设计规范能够帮助初学者养成良好的算法设计习惯。设计规范(1)算法说明(2)注释说明(3)合理安排输入和输出(4)适当的错误处理

在难懂的语句和关键的语句后加以恰当注释可大大提高程序可读性。(5)合理选用语句和算法结构1.4.1算法概念1.4算法描述及算法分析

算法的设计规范能够帮助初学者养成良好的算法设计习惯。设计规范(1)算法说明(2)注释说明(3)合理安排输入和输出(4)适当的错误处理(1)通过标准库函数获取或输出数据;(2)将函数参数作为输入/输出媒介;(3)通过全局甚至是外部变量隐式地传递信息。(5)合理选用语句和算法结构1.4.1算法概念1.4算法描述及算法分析

算法的设计规范能够帮助初学者养成良好的算法设计习惯。设计规范(1)算法说明(2)注释说明(3)合理安排输入和输出(4)适当的错误处理

对于非法输入及异常情况提供适当的处理。(5)合理选用语句和算法结构1.4.1算法概念1.4算法描述及算法分析

算法的设计规范能够帮助初学者养成良好的算法设计习惯。设计规范(1)算法说明(2)注释说明(3)合理安排输入和输出(4)适当的错误处理

运用三种基本语句,即赋值语句、选择语句和循环语句,设计一切算法。(5)合理选用语句和算法结构

不同层次上讨论算法具有不同描述方法,如自然语言、流程图、程序语言及类程序语言,但必须精确地描述计算过程。

一般而言,描述算法最合适的语言是介于自然语言和程序语言之间的类计算机程序语言。1.4.2算法描述1.4算法描述及算法分析

将所设计的求解步骤记录下来,即算法描述;常用的方法有四种。描述方法1.4.2算法描述1.4算法描述及算法分析

精选C语言的一个核心子集,利用了C++对C的部分扩展功能。描述说明(1)数据类型定义(2)基本操作算法描述(3)内存动态分配与释放(4)赋值语句(5)选择语句(6)循环语句(7)结束语句(8)输入和输出语句(9)基本函数(10)逻辑运算(11)注释语句

元素类型约定为ElemType,由用户实现时再自行具体定义。

(1)除函数参数需要说明类型外,算法中使用变量可不作变量说明。

(2)函数参数表中除值调用方式外增添C++引用调用参数传递方式"&"。具体说明参见教材1.4.21.4.3算法分析1.4算法描述及算法分析●度量算法效率的方法首先将算法实现,然后输入适当数据运行,最后测算其时间和空间开销。

事后统计法

该方法有两个主要缺点:其一,编写程序实现算法将会花费较多的时间和精力;其二,所得实验结果依赖于计算机软硬件等环境因素,有时候容易掩盖算法本身的优劣。●度量算法效率的方法对算法所消耗资源的一种估算法,这意味着得到一个大致正确结果即可。事前分析估算法

估算技术不能代替对一个问题的严格细节分析,但如果估算表明一个方法不可行,那么进一步的分析就没有必要了。

1.4.3算法分析1.4算法描述及算法分析1.4.3算法分析1.4算法描述及算法分析●算法所耗费的时间

●语句频度:语句的执行次数;

●每条语句的执行时间:语句频度与语句执行一次所需要时间的乘积;

●算法耗费时间:算法中每条语句的执行时间之和。

为了独立于机器的软、硬件系统来分析算法耗费的时间,设每条语句执行一次所需要的时间均是单位时间,那么一个算法耗费的时间就是该算法中所有语句的频度之和。1.4.3算法分析1.4算法描述及算法分析●算法所耗费的时间

例1-7

求两个n阶方阵的乘积C=A×B。算法1-1●算法的时间复杂度

●

问题规模:算法求解问题的输入量,一般用一个整数n来表示。

●时间复杂度:一般情况下,一个算法的耗费时间T(n)是算法所求解问题规模n的某个函数f(n),因此,算法时间度量记作T(n)=O(f(n)),表示随着问题规模n的增大,算法执行时间增长率和f(n)增长率相同,即当问题规模n趋向无穷大时,T(n)数量级称为算法的渐近时间复杂度,简称时间复杂度。DonaldE.Knuth在其经典著作《计算机程序设计艺术》中使用数学符号大O(读作“大欧”)记号描述函数渐进行为。1.4.3算法分析1.4算法描述及算法分析1.4.3算法分析1.4算法描述及算法分析●算法的时间复杂度定义

若存在两个正的常数c和n0,对于任意n≥n0,都有T(n)≤c

f(n),则称T(n)=O(f(n))。

使用大O符号时,O代表无穷大的渐进,它表示n趋近于无穷大时的一种情况。n0问题规模n执行次数n0之前的情况无关紧要T(n)c×f(n)f(n)用来描述增长率上限,即当输入规模为n时,算法消耗时间T(n)的最大值上限的阶越低则评估就越精确,算法分析结果就越有价值例1-8

对于算法1-1,T(n)=2n3+3n2+2n+1,当矩阵的阶数n趋向于无穷大时,显然有:

当n充分大时,T(n)和n3

之比是一个不等于零的常数,即T(n)和n3

同阶(同数量级),表示随着问题规模n的增大,算法耗费时间的增长率和n3

的增长率相同,f(n)=n3,记作T(n)=O(n3)。1.4.3算法分析1.4算法描述及算法分析●算法的时间复杂度

当输入量n<20时,有T1(n)>T2(n),算法A2

花费时间较少。

当输入量n>20时,有T1(n)<T2(n),算法A1

花费时间较少。例1-9

有两个算法A1和A2求解同一问题,时间复杂度分别是:T1(n)=100n2,T2(n)=5n3

1.4.3算法分析1.4算法描述及算法分析●算法的时间复杂度

当问题规模较大时,算法A1

比A2

更有效。算法A1

和A2

的时间复杂度O(n2)和O(n3)从宏观上评价了两个算法在时间方面的质量。

如果将算法中频度最大语句称为基本操作,则f(n)就是基本操作频度。因此算法时间复杂度取决于算法中基本操作的频度,T(n)=O(f(n))。1.4.3算法分析1.4算法描述及算法分析●算法的时间复杂度时间复杂度O(n3)如何求解算法时间复杂度?例1-10

交换a和b的内容。算法1-21.4.3算法分析1.4算法描述及算法分析●算法的时间复杂度

该算法中的三条单个语句的频度均为1。算法时间复杂度为常数阶,记作T(n)=O(1)。

一般情况下,一个没有循环(或有循环,但循环次数与问题规模n无关)的算法,时间复杂度为O(1)。1.4.3算法分析1.4算法描述及算法分

温馨提示

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

评论

0/150

提交评论