急性阑尾炎术后护理教学讲义课件_第1页
急性阑尾炎术后护理教学讲义课件_第2页
急性阑尾炎术后护理教学讲义课件_第3页
急性阑尾炎术后护理教学讲义课件_第4页
急性阑尾炎术后护理教学讲义课件_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

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

文档简介

急性阑尾炎术后护理急性阑尾炎术后护理

什么是急性阑尾炎呢?

急性阑尾炎是外科最常见的急腹症,临床上以转移性右下腹痛、右下腹有固定的压痛点为主要特征,治疗以手术为主。护理急性阑尾炎病人,术前应做好急症手术准备,术后鼓励早期活动,应严密观察内出血、腹腔残余脓肿等术后并发症。

什么是急性阑尾炎呢?

2那怎么术后护理呢?

1根据不同麻醉,选择适当卧位,如腰椎麻醉病人应去枕平卧8小时,防止脑脊液外漏而引起头痛。硬膜外麻醉病人应去枕平卧6小时。

2观察生命体征,每一小时测量血压、脉搏及呼吸一次,至平稳。如脉搏加快或血压下降,则考虑有出血,应及时观察伤口,采取必要措施。3单纯性阑尾炎切除术后12小时,或坏疽性或穿孔性阑尾炎切除术后,如置有引流管,待血压平稳后应改为半卧或低姿半卧位,以利于引流和防止炎性渗出液流入腹腔。那怎么术后护理呢?1根据不同3急性阑尾炎术后护理教学讲义课件4急性阑尾炎术后护理教学讲义课件5急性阑尾炎术后护理教学讲义课件6术后护理

④腹腔脓肿:常发生于化脓或坏疽性阑尾炎术后,特别是阑尾穿孔并发腹膜炎的患者,炎症渗出物积聚于膈下、盆腔、肠间隙并形成脓肿。常发生于术后5~7天,表现为体温升高或下降后又升高,并有腹痛、腹胀、腹部包块及直肠膀胱刺激症状等。按腹腔脓肿相应治疗原则处理。⑤粪瘘:多因阑尾残端结扎线脱落或术中损伤所致。一般经非手术治疗可自行闭合痊愈。经久不愈者,应查明病变性质及范围,行相应手术治疗。⑥阑尾残端炎:由于切除阑尾时残端太长,术后复发炎症,出现阑尾炎症状。可采用X线钡剂检查,以明确诊断。症状严重时,须行手术切除阑尾残端。⑦粘连性肠梗阻:由于手术损伤或阑尾周围脓液等因素,导致术后发生粘连性肠梗阻。一般经非手术治疗可痊愈,病情严重者需手术治疗。术后护理

④腹腔脓肿:常发生于化脓或坏疽性阑尾炎7一定要做好健康教育1.保持良好的饮食、卫生及生活习惯,餐后不做剧烈活动,尤其跳跃、奔跑等。

2.及时治疗胃肠道炎症及其它疾病,预防慢性阑尾炎急性发作。

3.术后早期下床活动,防止发生肠粘连。

一定要做好健康教育1.保持良好的饮食、卫生及生活习惯,餐后8术后护理4.阑尾周围脓肿者,出院时应告知病人3个月后再次住院行阑尾切除术。

5.自我监测,发生腹痛或不适时及时就诊术后护理9谢谢大家!谢谢大家!10第1章绪论主要知识点数据结构的基本概念抽象数据类型和软件构造方法算法和算法的时间复杂度算法书写规范第1章绪论主要知识点数据结构的基本概念抽象数据类型和软件111.1数据结构的基本概念1.基本术语(1)数据:人们利用文字符号、数字符号以及其他规定的符号对现实世界的事物及其活动所做的抽象描述。(2)数据元素:表示一个事物的一组数据。(3)数据项:构成数据元素的数据。例如,学生信息可包括学生的学号、姓名、性别、年龄等数据。这些数据构成学生情况的描述的数据项;包括学号、姓名、性别、年龄等数据项的一组数据就构成学生信息的一个数据元素。1.1数据结构的基本概念1.基本术语(1)数据:人们利用文12学生信息数据元素的表示方法是:structStudent{ longnumber; charname[10]; charsex[3]; intage;};学生信息数据元素的表示方法是:131.基本术语(续)(4)抽象数据元素:没有实际含义的数据元素。(5)抽象数据类型:没有确切定义的数据类型。(6)数据的逻辑结构:数据元素之间的相互联系方式。(7)数据的存储结构:数据元素在计算机中的存储方式。(8)数据的操作:对一种数据类型的数据进行的某种处理。(9)数据的操作集合:对一种数据类型的数据进行的所有操作。1.基本术语(续)(4)抽象数据元素:没有实际含义的数据元素14数据的逻辑结构线性结构:除第一个和最后一个数据元素外,每个数据元素只有一个前驱和一个后继数据元素。树结构:除根结点外,每个数据元素只有一个前驱数据元素,可有0个或若干个后继数据元素。图结构:每个数据元素可有0个或若干个前驱数据元素和0个或若干个后继数据元素。线性结构树结构图结构数据的逻辑结构线性结构:除第一个和最后一个数据元素外,每个数15数据的存储结构

顺序存储结构:把数据元素存储在一块连续地址空间的内存中,其特点是逻辑上相邻的数据元素在物理上也相邻,数据间的逻辑关系表现在数据元素存储位置关系上。指针是指向物理存储单元地址的变量。由数据元素域和指针域组成的一个结构体称为结点。链式存储结构:使用指针把相互直接关联的结点(即直接前驱结点或直接后继结点)链接起来,其特点是逻辑上相邻的数据元素在物理上不一定相邻,数据间的逻辑关系表现在结点的链接关系上。数据的存储结构顺序存储结构:把数据元素存储在一块连续地址空16数据的操作

从抽象角度,数据的操作主要讨论某种数据类型数据应具备的操作的逻辑功能,抽象角度下的操作一般和数据的逻辑结构一起讨论;在具体角度下,数据的操作主要讨论操作的具体实现算法。具体角度下的操作实现必须在数据的存储结构确定后才能进行。C++语言实现具体操作的方法是把操作设计为相应类的成员函数。

数据结构课程主要讨论表、堆栈、队列、串、数组、树、二叉树、图等典型的常用数据结构。在讨论这些典型数据结构时,主要从它们的逻辑结构、存储结构和数据操作三个方面进行分析讨论。数据的操作从抽象角度,数据的操作主要讨论某种数据类型数据应171.2抽象数据类型和软件构造方法类型是一组值的集合。数据类型是指一个类型和定义在这个类型上的操作集合。抽象数据类型是指一个逻辑概念上的类型和这个类型上的操作集合。数据类型和抽象数据类型的不同之处仅仅在于数据类型指的是高级程序设计语言支持的基本数据类型,而抽象数据类型指的是在基本数据类型支持下用户新设计的数据类型。1.2抽象数据类型和软件构造方法类型是一组值的集合。数据类18

抽象数据类型使软件设计成为工业化流水线生产的一个中间环节。一方面,根据给出的抽象数据类型的功能定义,负责设计这些抽象数据类型的专门公司设计该抽象数据类型的具体存储结构以及在具体存储结构下各操作的具体实现算法;另一方面,利用已设计实现的抽象数据类型模块,负责设计应用软件的专门公司可以安全、快速、方便的完成该应用软件系统的设计。

软件的设计采用模块化方法,抽象数据类型就是构造大型软件的最基本模块。在C++语言中,类就是确定了数据元素存储结构的抽象数据类型的具体实现。抽象数据类型使软件设计成为工业化流水线生产的191.3算法及其时间复杂度算法是描述求解问题方法的操作步骤集合。的一个有限长操作序列。描述算法的语言形式1.文字形式:用中文或英文这样的文字来描述算法。2.伪码形式:用一种仿程序设计语言的语言来描述算法。3.程序设计语言形式:用某种程序设计语言描述算法。其优点是算法不用修改,直接作为程序语句键入计算机,计算机能调用和运行。1.3算法及其时间复杂度算法是描述求解问题方法的操作步骤集20例1-1:设计一个把存储在数组中的有n个抽象数据元素a0,a1,…,an-1逆置的算法,即要求逆置后的数组中数据元素序列为an-1,…,a1,a0,并要求原数组中的数据元素值不能被改变。voidReverse(intn,DataTypea[],DataTypeb[]){ inti; for(i=0;i<n;i++) b[i]=a[n-1-i];//把数组a的元素逆置后赋给数组b}例1-1:设计一个把存储在数组中的有n个抽象数21例1-2:设计一个把存储在数组中的有n个抽象数据元素a0,a1,…,an-1逆置的算法,即要求逆置后的数组中数据元素序列为an-1,…,a1,a0,并要求原数组中的数据元素值被改变。voidReverse(intn,DataTypea[]){ inti,m=n/2; DataTypetemp; for(i=0;i<m;i++)//进行m次调换 {

temp=a[i]; a[i]=a[n-1-i]; a[n-1-i]=temp; }}例1-2:设计一个把存储在数组中的有n个抽象数22算法满足以下性质:

(1)输入性(2)输出性(3)有限性

(4)确定性(5)可执行性算法设计满足以下目标:

(1)正确性(2)可读性(3)健壮性

(4)高时间效率(5)高空间效率算法时间效率的度量算法的执行时间需通过根据该算法编制的程序在计算机上运行时所消耗的时间来度量。方法有两种:

(1)事后统计方法(2)事前分析方法算法满足以下性质:23程序运行消耗时间的有关因素:(1)书写算法的程序设计语言(2)编译产生的机器语言代码质量(3)机器执行指令的速度(4)问题的规模,即算法的时间效率与算法所处理的数据个数n的函数关系。算法的时间效率是算法所处理的数据个数n的函数,算法的时间效率也称作算法的时间复杂度。定义:T(n)=O(f(n)),当且仅当存在正常数c和n0,对所有的n(n≥n0)满足T(n)≤c×f(n)。程序运行消耗时间的有关因素:(1)书写算法的程序设计语言24例1-3设数组a和b在前边部分已赋值,求如下两个n阶矩阵相乘运算算法的时间复杂度。for(i=0;i<n;i++)for(j=0;j<n;j++){ c[i][j]=0;//基本语句1

for(k=0;k<n;k++) c[i][j]=c[i][j]+a[i][k]*b[k][j];//基本语句2}解:设基本语句的执行次数为f(n),有f(n)=c1×n2+c2×n3,因T(n)=f(n)=c1×n2+c2×n3≤c

×n3,其中c1,

c2,

c均为常数,所以该算法的时间复杂度为T(n)=O(n3)例1-3设数组a和b在前边部分已赋值,求如25

例1-4设n为如下算法处理的数据个数,求如下算法的时间复杂度。

for(i=1;i<=n;i=2*i)printf(“i=%d“,i);解:设基本语句的执行次数为f(n),有2f(n)≤n,即有f(n)≤lbn。因T(n)=f(n)≤lbn≤c×

lbn,所以该算法的时间复杂度为T(n)=O(lbn)。例1-5:下边的算法是用冒泡排序法对数字a中的n个整数类型的数据元素(a[0]~a[n-1]),从小到大进行排序,求该算法的时间复杂度。例1-4设n为如下算法处理的数据个数,求如26voidBubbleSort(inta[],intn){ inti,j,flag=1; inttemp; for(i=1;i<n&&flag==1;i++) { flag=0; for(j=0;j<n-i;j++) { if(a[j]>a[j+1]) { flag=1; temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } }}voidBubbleSort(inta[],intn)27解:设基本语句的执行次数为f(n),最坏情况下有

f(n)≈n+4*n2/2因T(n)=f(n)≈n+2*n2≤c*

n2,其中c为常数,所以该算法的时间复杂度为T(n)=O(n2)。

算法的时间复杂度是衡量一个算法好坏的重要指标。一般来说,具有多项式时间复杂度的算法,是可接受、可实际使用的算法;具有指数时间复杂度的算法,是只有当n足够小时才可使用的算法。解:设基本语句的执行次数为f(n),最坏情况下有28例1-6下面的算法是在一个有n个数据元素的数组a中删除第I个位置的数组元素,要求当删除成功时数组元素个数减1,求该算法的时间复杂度。其中数组下标从0至n-1。intDelete(inta[],int&n,inti){ intj; if(i<0||i>=n)return0;//删除位置错误,失败返回

for(j=i+1;j<n;j++)a[j-1]=a[j];//顺次移位填补

n--;//数组元素个数减1

return1;//删除成功返回}例1-6下面的算法是在一个有n个数据元素的数29解:假设删除任何位置上的数据元素都是等概率的,设Pi为删除第i个位置上数据元素的概率,则有Pi=1/n,设E为删除数组元素的平均次数,则有因T(n)=E≤(n+1)/2≤

c*n,其中c为常数,所以该算法的等概率平均时间复杂度为T(n)=O(n).解:假设删除任何位置上的数据元素都是等概率的,设Pi为删除第30以下六种计算算法时间的多项式是最常用的。其关系为:O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)指数时间的关系为:

O(2n)<O(n!)<O(nn)

当n取得很大时,指数时间算法和多项式时间算法在所需时间上非常悬殊。因此,只要有人能将现有指数时间算法中的任何一个算法化简为多项式时间算法,那就取得了一个伟大的成就。以下六种计算算法时间的多项式是最常用的。其关系为:31计算机处理中的“难”的问题和不可解问题

现实世界中,大量非数值问题在求解时,首先要判定其是否可解。通过建立计算的数学模型(如图灵机、递归函数、λ-演算、Post系统等)精确区分哪些是可计算的,哪些是不可计算的。但是许多问题本身是不可判定的(如悖论问题、图灵机停机问题等)。只有是可判定、可计算的问题,才能通过精确的算法描述进行求解。计算的过程就是执行算法的过程。可计算性的核心问题是将算法这一直观概念精确化,变为一个具有有限性、可执行性、确定性、终止性、有限个输入、1个或1个以上输出的具体算法。

计算机处理中的“难”的问题和不可解问题现实世界中,大量321.多项式问题(P问题)如果一个问题的规模是n,按某种算法解决问题时用的计算次数是n的多项式,或者说计算的复杂度为O(logn),O(n),O(n2),O(n3)或O(nk)(k为常数),则称该算法为多项式算法,而这类问题称为多项式(P)问题。以当今计算机的处理速度,对于一个有合理输入数量的多项式问题,计算机都能有效地予以解决。一个问题会有多种算法,算法会有快、慢。例如教材中排序、查找部分,选择排序比冒泡排序快,对分查找比顺序查找快,等等。1.多项式问题(P问题)如果一个332.非多项式问题(NP问题)

有许多问题,当它们的规模变得越来越大时,不管你采用什么算法,求解它所用的时间都会长得惊人。就算是用当今的快速计算机,都无法在可容忍的时间内完成,这就是所谓非多项式(NP)问题。2.非多项式问题(NP问题)

有许34若问题求解时所用算法的计算时间的阶等价于某种指数函数,或者说算法的复杂度为O(2n),O(kn)(k为常数)或O(n!),则称该算法为指数型算法,而这类问题就是非多项式(NP)问题。非多项式问题远比多项式问题难度大,当问题规模增大时,用计算机处理需要数月甚至数年的时间才能得出问题结果。例如,梵塔问题、货郎担问题、因式分解问题、纵横字谜问题、图形着色问题、棋类博弈问题、可满足性问题等等都是所谓“难”的问题。若问题求解时所用算法的计算时间的阶等价于某种指数函数,353.不可解问题

对这类问题,无法用计算机程序来解决。图灵是较早发现这类问题的人。例如,他提出了“停机问题”就是一个不可解问题。还有很多不可解问题。问题不可解的问题非多项式问题多项式问题可解的问题3.不可解问题对这类问题,无法用计算36算法设计时需要注意1.必须把问题形式化;

2.问题必须是可计算的,即一定要有算法;

3.要用计算机实现一个算法以解决某种问题,问题的复杂度必须是合理的,即要避免指数爆炸。

算法的时间复杂度是衡量一个算法好坏的重要指标。一般来说,具有多项式时间复杂度的算法,是可接受、可实际使用的算法;具有指数时间复杂度的算法,是只有当n足够小时才可使用的算法。算法设计时需要注意1.必须把问题形式化;

2.问题必须是371.4算法的书写规范算法应具有可读性,主要体现在算法的符号命名和书写格式上。命名规范:(1)各种符号均以英语单词命名,所有命名应见名知意。(2)变量名字母均小写,若单词多于一个时,第二个单词首字母大写。(3)类名、方法名、常量变量名和文件名字母均小写,但所有单词的首字母大写。(4)使用适当的缩写形式。(5)函数中的类类型参数用单字母大写。1.4算法的书写规范算法应具有可读性,主要38书写规范:

(1)#include先包括系统头文件,再包括自定义头文件。(2)变量就近定义,以便于阅读和查找。(3)算法采用缩进格式书写。(4)当算法简单时,通常不分段;当算法复杂时,可分成若干段,每段之间空一行。(5)为增加算法的可读性,算法中应添加适当的注释语句。intDelete(inta[],int&n,inti){ intj; if(i<0||i>=n)return0;//删除位置错误,失败返回

for(j=i+1;j<n;j++)a[j-1]=a[j];//顺次移位填补

n--;//数组元素个数减1

return1;//删除成功返回}书写规范:39作业P251-3,1-7,1-11(5),1-12作业40急性阑尾炎术后护理急性阑尾炎术后护理

什么是急性阑尾炎呢?

急性阑尾炎是外科最常见的急腹症,临床上以转移性右下腹痛、右下腹有固定的压痛点为主要特征,治疗以手术为主。护理急性阑尾炎病人,术前应做好急症手术准备,术后鼓励早期活动,应严密观察内出血、腹腔残余脓肿等术后并发症。

什么是急性阑尾炎呢?

42那怎么术后护理呢?

1根据不同麻醉,选择适当卧位,如腰椎麻醉病人应去枕平卧8小时,防止脑脊液外漏而引起头痛。硬膜外麻醉病人应去枕平卧6小时。

2观察生命体征,每一小时测量血压、脉搏及呼吸一次,至平稳。如脉搏加快或血压下降,则考虑有出血,应及时观察伤口,采取必要措施。3单纯性阑尾炎切除术后12小时,或坏疽性或穿孔性阑尾炎切除术后,如置有引流管,待血压平稳后应改为半卧或低姿半卧位,以利于引流和防止炎性渗出液流入腹腔。那怎么术后护理呢?1根据不同43急性阑尾炎术后护理教学讲义课件44急性阑尾炎术后护理教学讲义课件45急性阑尾炎术后护理教学讲义课件46术后护理

④腹腔脓肿:常发生于化脓或坏疽性阑尾炎术后,特别是阑尾穿孔并发腹膜炎的患者,炎症渗出物积聚于膈下、盆腔、肠间隙并形成脓肿。常发生于术后5~7天,表现为体温升高或下降后又升高,并有腹痛、腹胀、腹部包块及直肠膀胱刺激症状等。按腹腔脓肿相应治疗原则处理。⑤粪瘘:多因阑尾残端结扎线脱落或术中损伤所致。一般经非手术治疗可自行闭合痊愈。经久不愈者,应查明病变性质及范围,行相应手术治疗。⑥阑尾残端炎:由于切除阑尾时残端太长,术后复发炎症,出现阑尾炎症状。可采用X线钡剂检查,以明确诊断。症状严重时,须行手术切除阑尾残端。⑦粘连性肠梗阻:由于手术损伤或阑尾周围脓液等因素,导致术后发生粘连性肠梗阻。一般经非手术治疗可痊愈,病情严重者需手术治疗。术后护理

④腹腔脓肿:常发生于化脓或坏疽性阑尾炎47一定要做好健康教育1.保持良好的饮食、卫生及生活习惯,餐后不做剧烈活动,尤其跳跃、奔跑等。

2.及时治疗胃肠道炎症及其它疾病,预防慢性阑尾炎急性发作。

3.术后早期下床活动,防止发生肠粘连。

一定要做好健康教育1.保持良好的饮食、卫生及生活习惯,餐后48术后护理4.阑尾周围脓肿者,出院时应告知病人3个月后再次住院行阑尾切除术。

5.自我监测,发生腹痛或不适时及时就诊术后护理49谢谢大家!谢谢大家!50第1章绪论主要知识点数据结构的基本概念抽象数据类型和软件构造方法算法和算法的时间复杂度算法书写规范第1章绪论主要知识点数据结构的基本概念抽象数据类型和软件511.1数据结构的基本概念1.基本术语(1)数据:人们利用文字符号、数字符号以及其他规定的符号对现实世界的事物及其活动所做的抽象描述。(2)数据元素:表示一个事物的一组数据。(3)数据项:构成数据元素的数据。例如,学生信息可包括学生的学号、姓名、性别、年龄等数据。这些数据构成学生情况的描述的数据项;包括学号、姓名、性别、年龄等数据项的一组数据就构成学生信息的一个数据元素。1.1数据结构的基本概念1.基本术语(1)数据:人们利用文52学生信息数据元素的表示方法是:structStudent{ longnumber; charname[10]; charsex[3]; intage;};学生信息数据元素的表示方法是:531.基本术语(续)(4)抽象数据元素:没有实际含义的数据元素。(5)抽象数据类型:没有确切定义的数据类型。(6)数据的逻辑结构:数据元素之间的相互联系方式。(7)数据的存储结构:数据元素在计算机中的存储方式。(8)数据的操作:对一种数据类型的数据进行的某种处理。(9)数据的操作集合:对一种数据类型的数据进行的所有操作。1.基本术语(续)(4)抽象数据元素:没有实际含义的数据元素54数据的逻辑结构线性结构:除第一个和最后一个数据元素外,每个数据元素只有一个前驱和一个后继数据元素。树结构:除根结点外,每个数据元素只有一个前驱数据元素,可有0个或若干个后继数据元素。图结构:每个数据元素可有0个或若干个前驱数据元素和0个或若干个后继数据元素。线性结构树结构图结构数据的逻辑结构线性结构:除第一个和最后一个数据元素外,每个数55数据的存储结构

顺序存储结构:把数据元素存储在一块连续地址空间的内存中,其特点是逻辑上相邻的数据元素在物理上也相邻,数据间的逻辑关系表现在数据元素存储位置关系上。指针是指向物理存储单元地址的变量。由数据元素域和指针域组成的一个结构体称为结点。链式存储结构:使用指针把相互直接关联的结点(即直接前驱结点或直接后继结点)链接起来,其特点是逻辑上相邻的数据元素在物理上不一定相邻,数据间的逻辑关系表现在结点的链接关系上。数据的存储结构顺序存储结构:把数据元素存储在一块连续地址空56数据的操作

从抽象角度,数据的操作主要讨论某种数据类型数据应具备的操作的逻辑功能,抽象角度下的操作一般和数据的逻辑结构一起讨论;在具体角度下,数据的操作主要讨论操作的具体实现算法。具体角度下的操作实现必须在数据的存储结构确定后才能进行。C++语言实现具体操作的方法是把操作设计为相应类的成员函数。

数据结构课程主要讨论表、堆栈、队列、串、数组、树、二叉树、图等典型的常用数据结构。在讨论这些典型数据结构时,主要从它们的逻辑结构、存储结构和数据操作三个方面进行分析讨论。数据的操作从抽象角度,数据的操作主要讨论某种数据类型数据应571.2抽象数据类型和软件构造方法类型是一组值的集合。数据类型是指一个类型和定义在这个类型上的操作集合。抽象数据类型是指一个逻辑概念上的类型和这个类型上的操作集合。数据类型和抽象数据类型的不同之处仅仅在于数据类型指的是高级程序设计语言支持的基本数据类型,而抽象数据类型指的是在基本数据类型支持下用户新设计的数据类型。1.2抽象数据类型和软件构造方法类型是一组值的集合。数据类58

抽象数据类型使软件设计成为工业化流水线生产的一个中间环节。一方面,根据给出的抽象数据类型的功能定义,负责设计这些抽象数据类型的专门公司设计该抽象数据类型的具体存储结构以及在具体存储结构下各操作的具体实现算法;另一方面,利用已设计实现的抽象数据类型模块,负责设计应用软件的专门公司可以安全、快速、方便的完成该应用软件系统的设计。

软件的设计采用模块化方法,抽象数据类型就是构造大型软件的最基本模块。在C++语言中,类就是确定了数据元素存储结构的抽象数据类型的具体实现。抽象数据类型使软件设计成为工业化流水线生产的591.3算法及其时间复杂度算法是描述求解问题方法的操作步骤集合。的一个有限长操作序列。描述算法的语言形式1.文字形式:用中文或英文这样的文字来描述算法。2.伪码形式:用一种仿程序设计语言的语言来描述算法。3.程序设计语言形式:用某种程序设计语言描述算法。其优点是算法不用修改,直接作为程序语句键入计算机,计算机能调用和运行。1.3算法及其时间复杂度算法是描述求解问题方法的操作步骤集60例1-1:设计一个把存储在数组中的有n个抽象数据元素a0,a1,…,an-1逆置的算法,即要求逆置后的数组中数据元素序列为an-1,…,a1,a0,并要求原数组中的数据元素值不能被改变。voidReverse(intn,DataTypea[],DataTypeb[]){ inti; for(i=0;i<n;i++) b[i]=a[n-1-i];//把数组a的元素逆置后赋给数组b}例1-1:设计一个把存储在数组中的有n个抽象数61例1-2:设计一个把存储在数组中的有n个抽象数据元素a0,a1,…,an-1逆置的算法,即要求逆置后的数组中数据元素序列为an-1,…,a1,a0,并要求原数组中的数据元素值被改变。voidReverse(intn,DataTypea[]){ inti,m=n/2; DataTypetemp; for(i=0;i<m;i++)//进行m次调换 {

temp=a[i]; a[i]=a[n-1-i]; a[n-1-i]=temp; }}例1-2:设计一个把存储在数组中的有n个抽象数62算法满足以下性质:

(1)输入性(2)输出性(3)有限性

(4)确定性(5)可执行性算法设计满足以下目标:

(1)正确性(2)可读性(3)健壮性

(4)高时间效率(5)高空间效率算法时间效率的度量算法的执行时间需通过根据该算法编制的程序在计算机上运行时所消耗的时间来度量。方法有两种:

(1)事后统计方法(2)事前分析方法算法满足以下性质:63程序运行消耗时间的有关因素:(1)书写算法的程序设计语言(2)编译产生的机器语言代码质量(3)机器执行指令的速度(4)问题的规模,即算法的时间效率与算法所处理的数据个数n的函数关系。算法的时间效率是算法所处理的数据个数n的函数,算法的时间效率也称作算法的时间复杂度。定义:T(n)=O(f(n)),当且仅当存在正常数c和n0,对所有的n(n≥n0)满足T(n)≤c×f(n)。程序运行消耗时间的有关因素:(1)书写算法的程序设计语言64例1-3设数组a和b在前边部分已赋值,求如下两个n阶矩阵相乘运算算法的时间复杂度。for(i=0;i<n;i++)for(j=0;j<n;j++){ c[i][j]=0;//基本语句1

for(k=0;k<n;k++) c[i][j]=c[i][j]+a[i][k]*b[k][j];//基本语句2}解:设基本语句的执行次数为f(n),有f(n)=c1×n2+c2×n3,因T(n)=f(n)=c1×n2+c2×n3≤c

×n3,其中c1,

c2,

c均为常数,所以该算法的时间复杂度为T(n)=O(n3)例1-3设数组a和b在前边部分已赋值,求如65

例1-4设n为如下算法处理的数据个数,求如下算法的时间复杂度。

for(i=1;i<=n;i=2*i)printf(“i=%d“,i);解:设基本语句的执行次数为f(n),有2f(n)≤n,即有f(n)≤lbn。因T(n)=f(n)≤lbn≤c×

lbn,所以该算法的时间复杂度为T(n)=O(lbn)。例1-5:下边的算法是用冒泡排序法对数字a中的n个整数类型的数据元素(a[0]~a[n-1]),从小到大进行排序,求该算法的时间复杂度。例1-4设n为如下算法处理的数据个数,求如66voidBubbleSort(inta[],intn){ inti,j,flag=1; inttemp; for(i=1;i<n&&flag==1;i++) { flag=0; for(j=0;j<n-i;j++) { if(a[j]>a[j+1]) { flag=1; temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } }}voidBubbleSort(inta[],intn)67解:设基本语句的执行次数为f(n),最坏情况下有

f(n)≈n+4*n2/2因T(n)=f(n)≈n+2*n2≤c*

n2,其中c为常数,所以该算法的时间复杂度为T(n)=O(n2)。

算法的时间复杂度是衡量一个算法好坏的重要指标。一般来说,具有多项式时间复杂度的算法,是可接受、可实际使用的算法;具有指数时间复杂度的算法,是只有当n足够小时才可使用的算法。解:设基本语句的执行次数为f(n),最坏情况下有68例1-6下面的算法是在一个有n个数据元素的数组a中删除第I个位置的数组元素,要求当删除成功时数组元素个数减1,求该算法的时间复杂度。其中数组下标从0至n-1。intDelete(inta[],int&n,inti){ intj; if(i<0||i>=n)return0;//删除位置错误,失败返回

for(j=i+1;j<n;j++)a[j-1]=a[j];//顺次移位填补

n--;//数组元素个数减1

return1;//删除成功返回}例1-6下面的算法是在一个有n个数据元素的数69解:假设删除任何位置上的数据元素都是等概率的,设Pi为删除第i个位置上数据元素的概率,则有Pi=1/n,设E为删除数组元素的平均次数,则有因T(n)=E≤(n+1)/2≤

c*n,其中c为常数,所以该算法的等概率平均时间复杂度为T(n)=O(n).解:假设删除任何位置上的数据元素都是等概率的,设Pi为删除第70以下六种计算算法时间的多项式是最常用的。其关系为:O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)指数时间的关系为:

O(2n)<O(n!)<O(nn)

当n取得很大时,指数时间算法和多项式时间算法在所需时间上非常悬殊。因此,只要有人能将现有指数时间算法中的任何一个算法化简为多项式时间算法,那就取得了一个伟大的成就。以下六种计算算法时间的多项式是最常用的。其关系为:71计算机处理中的“难”的问题和不可解问题

现实世界中,大量非数值问题在求解时,首先要判定其是否可解。通过建立计算的数学模型(如图灵机、递归函数、λ-演算、Post系统等)精确区分哪些是可计算的,哪些是不可计算的。但是许多问题本身是不可判定的(如悖论问题、图灵机停机问题等)。只有是可判定、可计算的问题,才能通过精确的算法描述进行求解。计算的过程就是执行算法的过程。可计算性的核心问题是将算法这一直观概念精确化,变为一个具有有限性、可执行性、确定性、终止性、有限个输入、1个或1个以上输出的具体算法。

计算机处理中的“难”的问题和不可解问题现实世界中,大量721.多项式问题(P问题)如果一个问题的规模是n,按某种算法解决问题时用的计算次数是n的多项式,或者说计算的复杂度为O(logn),O(n),O(n2),O(n3)或O(nk)(k为常数),则称该算法为多项式算法,而这类问题称为多项式(P)问题。以当今计算机的处理速度,对于一个有合理输入数量的多项式问题,计算机都能有效地予以解决。一个问题会有多种算法,算法会有快、慢。例如教材中排序、查找部分,选择排序比冒泡排序快,对分查找比顺序查找快,等等。1.多项式问题(P问题)如果一个732.非多项式问题(NP问题)

有许多问题,当它们的规模变得越来越大时,不管你采用什么算法,求解它所用的时间都会长得惊人。就算是用当今的快速计算机,都无法在可容忍的时间内完成,这就是所谓非多项式(NP)问题。2.非多项式问题(NP问题)

有许74若问题求解时所用

温馨提示

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

评论

0/150

提交评论