分享
分享赚钱 收藏 举报 版权申诉 / 79

类型一绪论10级.ppt

  • 上传人:gnk289057
  • 文档编号:8129000
  • 上传时间:2019-06-10
  • 格式:PPT
  • 页数:79
  • 大小:794KB
  • 配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    一绪论10级.ppt
    资源描述:

    1、1,第一章 绪论,2,1.1 数据结构讨论的范畴,1.2 基本概念,1.3 算法及其描述和分析,本章计划使用4学时,3,1.1 数据结构讨论的范畴,Niklaus Wirth:Algorithm + Data Structures = Programs,程序设计:算法: 数据结构:,为计算机处理问题编制 的一组指令集,处理问题的策略,问题的数学模型,4,概括地说:,数据结构是一门讨论“描述现实世界实体的数学模型(非数值计算)及其上的操作在计算机中如何表示和实现”的学科。,5,1.2 基本概念,一、数据与数据结构,二、数据类型,三、C语言简述,返回目录,6,一、数据与数据结构,所有能被输入到计算

    2、机中,且能被计算机处理的符号的集合。,数据:,是计算机操作的对象的总称。,是计算机处理的信息的某种特定的符号表示形式。,7,是数据(集合)中的一个“个体”,数据元素:,是数据结构中讨论的基本单位,8,数据元素的映象方法:,用二进制位(bit)的位串表示数据元素,(321)10 = (501)8 = (101000001)2,A = (101)8 = (001000001)2,9,数据项:,是数据结构中讨论的最小单位,数据元素可以是数据项的集合.,数据结构:带结构的数据元素的集合,不同的“关系”构成不同的“结构”. 结构定义中的关系描述是数据元素的逻辑结构;数据结构在计算机中的表示是数据元素的物

    3、理结构。,数据元素相互之间的关系叫结构,10,数据结构的形式定义为:,数据结构是一个二元组:,Data_Structures = (D, S),其中:D 是数据元素的有限集,S 是 D上关系的有限集。,11,物理结构:数据在计算机中的表示是数据元素的物理结构(也叫存储结构) 。,数据的结构类型,逻辑结构:结构定义中的关系描述是数据元素的逻辑结构;,12,数据的逻辑结构可归结为以下四类:,线性结构,树形结构,图型结构,集合结构,你可要记住哦!,13,数据的存储结构, 逻辑结构在存储器中的映象,“数据元素”的映象 ?,“关系”的映象 ?,14,数据的存储结构, 逻辑结构在存储器中的映象,顺序映象(

    4、顺序结构),链式映象(链式结构),也叫物理结构,索引映象(索引结构) 散列映象(散列结构),15,关系的映象方法:,(表示x, y的方法),顺序映象,以相对的存储位置表示后继关系,例如:令 y 的存储位置和 x 的存储位置之间差一个常量 C,而 C 是一个隐含值,整个存储结构中只含数据元素本身的信息,x y,16,链式映象,以附加信息(指针)表示后继关系,需要用一个和 x 在一起的附加信息指示 y 的存储位置,y x,17,在不同的编程环境中,,存储结构可有不同的描述方法。,当用高级程序设计语言进行编程时,通常可用高级编程语言中提供的数据类型描述之。,18,例如:,以三个带有次序关系的整数表示

    5、一个长整数时,可利用 C 语言中提供的整数数组类型。,typedef int Long_int 3,定义长整数为:,19,数据类型 是一个 值的集合 和定义在此集合上的 一组操作 的总称。,不同类型的变量,其所能取的值的范围不同,所能进行的操作不同。,二、数据类型,20,例如,C 语言中提供的基本数据类型有:,整型 int,浮点型 float,字符型 char,逻辑型 bool ( C+语言),双精度型 double,实型( C+语言),21,C语言数据类型 数据类型总表,数据类型决定: 1. 数据占内存字节数 2. 数据取值范围 3. 其上可进行的操作,22,常量说明采用C+语言的规范。/函

    6、数结果主要状态代码const TRUE1;const FAlSE0;const OK:1;const ERROR0;const INFEASIBlE一1;const OVERFLOW一2;/status是函数的返回值类型,其值是函数结果状态代码typedef instatus;/布尔型类型enum boolTRUE,FALSE),1.预定义常量和类型,1,三、C语言简述,23,数据结构的表示(存储结构)都用类型定义(typedef)的方式描述。基本数据元素类型约定为ElemType,由用户在使用该数据类型时再自行具体定义。,2.数据结构的表示(存储结构)都用类型定义(typedef)的方式描述

    7、。,(3)基本操作的算法都用以下形式的函数描述:,函数类型函数名(函数参数表) /算法说明语句序列 /函数名,2,24,函数的参数需要说明类型外,算法中使用的辅助变量可以不作变量说明,必要时对其作用给予注释。一般而言,a、b、c、d、e等用作数据元素名i、k、l、m、n等用作整型变量名,p、q、r等用作指针变量名。每个操作函数一般均返回一个状态码,向调用程序报告结果状态。当函数返回值为函数结果状态代码时,函数定义为status类型。为了便于算法描述,在函数参数表中除了值调用方式外,增添了C+语言的引用调用的参数传递方式。在形参表中,以&打头的参数即为引用参数。引用参数能被函数本身更新参数值,可

    8、以此作为输出数据的管道。 参数表中的某个参数允许预先用表达式的形式,3,25,例如:函数类型函数名(类型1 参数l,类型2 参数2-算术表达式) 在调用时可以是函数名(实参数1); /实参数1使用默认值函数名(实参数1,实参数2);/实参数2不使用默认值, 另外定义4.存储的动态分配与释放使用new和delete动态分配和释放内存空间。分配空间 指针变量;new数据类型;释放空间 delete指针变量;,4,26,5.赋值语句有,简单赋值 变量名=表达式; 串联赋值 变量名1=变量名2=变量名k=表达式 成组赋值 (变量名l,变量名2,变量名k)=表达式1,表达式2,表达式k);结构名=结构名

    9、;结构名=值1,值2,值k);变量名 表达式;表达式;变量名起始下标终止下标=变量名起始下标一终止下标; 条件赋值 变量名=条件表达式?表达式T:表达式F; 6.选择语句有 条件语句1 if(条件表达式)语句; 条件语句2 if(条件表达式)语句; 开关语句1 开关语句2,5,27,7.循环语句,for语句 while语句 do-while语句case值n:语句n;break;default:语句n+1; switchcase条件1:语句l;break; case条件n:语句n;break; default:语句n+1; for(赋初值表达式序列;条件表达式;修改表达式序列)语句; while

    10、(条件表达式)语句; do语句序列; )while(条件表达式);,28,8.结束语句 函数结束语句 return表达式;return; case结束语句 break;9.输入和输出语句使用流式输入输出的形式输入语句 cin变量1)变量n;输出语句 cout表达式1表达式n;10.注释 单行注释 /文字序列,29,11.基本函数有 求最大值max(表达式1,表达式n) 求最小值min(表达式1,表达式n) 求绝对值abs(表达式) 退出程序 exit(表达式) 12.逻辑运算约定与运算&: 对于A&B,当A的值为0时,不再对B求值。或运算: 对于AB,当A的值为非0时,不再对B求值。,返回目录

    11、,30,13.C是模块化程序设计语言,C程序结构,C是函数式语言 必须有且只能有一个名为main的主函数 C程序的执行总是从main函数开始,在main中结束 函数不能嵌套定义,可以嵌套调用,31,14.不同类型数据间的转换 隐式转换 什么情况下发生 运算转换-不同类型数据混合运算时 赋值转换-把一个值赋给与其类型不同的变量时 输出转换-输出时转换成指定的输出格式 函数调用转换-实参与形参类型不一致时转换 运算转换规则:不同类型数据运算时先自动转换成同一类型,32,33,显式转换(强制转换) 一般形式:(类型名)(表达式) 例 (int)(x+y)(int)x+y(double)(3/2)(i

    12、nt)3.6 说明:强制转换得到所需类型的中间变量,原变量类型不变,例 main() float x;int i;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i); 结果:x=3.600000,i=3,精度损失问题,Ch2_007.c,Ch2_008.c,34,15.运算符和表达式,35,学习运算符应注意: 运算符功能 与运算量关系 要求运算量个数 要求运算量类型 运算符优先级别 结合方向 结果的类型,36,算术运算符和表达式 基本算术运算符: + - * / % 结合方向:从左向右 优先级: - -* / % - + -(2) (3) (4) 说明: “-”可为单

    13、目运算符时,右结合性 两整数相除,结果为整数 %要求两侧均为整型数据,例 5/2 =-5/2.0 =,例 5%2 =-5%2 =1%10 =5%1 =5.5%2,例 5/2 = 2 -5/2.0 = -2.5,例 5%2 = 1 -5%2 = -11%10 = 15%1 = 05.5%2 (),37,自增、自减运算符+ - 作用:使变量值加1或减1 种类: 前置 +i, -i (先执行i+1或i-1,再使用i值) 后置 i+,i- (先使用i值,再执行i+1或i-1),例 j=3; k=+j; j=3; k=j+; j=3; printf(“%d”,+j); j=3; printf(“%d”,

    14、j+); a=3;b=5;c=(+a)*b; a=3;b=5;c=(a+)*b;,/k=4,j=4,/k=3,j=4,/4,/3,/c=20,a=4,/c=15,a=4,38,自增、自减运算符+ - 作用:使变量值加1或减1 种类: 前置 +i, -i (先执行i+1或i-1,再使用i值) 后置 i+,i- (先使用i值,再执行i+1或i-1),说明: + - 不能用于常量和表达式,如5+,(a+b)+ + -结合方向: 自右向左 优先级:- + - -* / % -+ -(2) (3) (4),例 -i+ -(i+)i=3; printf(“%d”,-i+); /-3,例 -i+i=3; p

    15、rintf(“%d”,-i+);,Ch2_009.c,39,赋值运算符和表达式 简单赋值运算符 符号: = 格式: 变量标识符=表达式 作用:将一个数据(常量或表达式)赋给一个变量,复合赋值运算符 种类:+= -= *= /= %= = = &= = |= 含义: exp1 op= exp2 exp1 = exp1 op exp2,例 a=3;d=func();c=d+2;,40,说明: 结合方向:自右向左 优先级: 14 左侧必须是变量,不能是常量或表达式,赋值表达式的值与变量值相等,且可嵌套,赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型,例 3=x-2*y;a+b=3;,例

    16、 float f; int i;i=10; f=i; 则 f=10.0,例 int i; i=2.56; /结果i=2;,例: a=b=c=5a=(b=5)a=5+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2),/表达式值为5,a,b,c值为5,/ b=5;a=5,/表达式值11,c=6,a=11,/表达式值10,a=10,b=4,c=6,/表达式值5,a=5,b=10,c=2,41,函数分类 从用户角度 标准函数(库函数):由系统提供 用户自定义函数 从函数形式 无参函数 有参函数,使用库函数应注意: 1、函数功能 2、函数参数的数目和顺序,及各参数意义和类型 3、函数返回

    17、值意义和类型 4、需要使用的包含文件,Ch7_201.c,42,函数的定义 一般格式,合法标识符,函数返回值类型 缺省int型 无返回值void,函数体,例 有参函数(现代风格)int max(int x,int y) int z;z=xy?x:y;return(z);,例 无参函数printstar( ) printf(“*n”); 或printstar(void ) printf(“*n”); ,43,6.4 函数的调用 调用形式函数名(实参表); 说明: 实参与形参个数相等,类型一致,按顺序一一对应 实参表求值顺序,因系统而定(Turbo C 自右向左),44,调用方式 函数语句:例 p

    18、rintstar();printf(“Hello,World!n”); 函数表达式:例 m=max(a,b)*2; 函数参数:例 printf(“%d”,max(a,b);m=max(a,max(b,c);,45,函数说明 对被调用函数要求: 必须是已存在的函数 库函数: #include 用户自定义函数: 函数类型说明 函数说明 一般形式: 函数类型 函数名(形参类型 形参名, );或 函数类型 函数名(); 作用:告诉编译系统函数类型、参数个数及类型,以便检验 函数定义与函数说明不同 函数说明位置:程序的数据说明部分(函数内或外) 下列情况下,可不作函数说明 若函数返值是char或int型

    19、,系统自动按int型处理 被调用函数定义出现在主调函数之前 有些系统(如Borland C+)要求函数说明指出函数返值类型和形参类型,并且对void 和 int 型函数也要进行函数说明,46,16. 函数参数及其传递方式 形参与实参 形式参数:定义函数时函数名后面括号中的变量名 实际参数:调用函数时函数名后面括号中的表达式,例 比较两个数并输出大者,main() int a,b,c;scanf(“%d,%d“, ,47,说明: 实参必须有确定的值 形参必须指定类型 形参与实参类型一致,个数相同 若形参与实参类型不一致,自动按形参类型转换函数调用转换 形参在函数被调用前不占内存;函数调用时为形参

    20、分配内存;调用结束,内存释放,16. 函数参数及其传递方式 形参与实参 形式参数:定义函数时函数名后面括号中的变量名 实际参数:调用函数时函数名后面括号中的表达式,48,参数传递方式 值传递方式 方式:函数调用时,为形参分配单元,并将实参的值复制到形参中;调用结束,形参单元被释放,实参单元仍保留并维持原值 特点: 形参与实参占用不同的内存单元 单向传递,49,6.6 函数的嵌套与递归调用 嵌套调用 C规定:函数定义不可嵌套,但可以嵌套调用函数,50,变量的属性 数据类型:变量所持有的数据的性质(操作属性) 存储属性 存储器类型:寄存器、静态存储区、动态存储区 生存期:变量在某一时刻存在-静态变

    21、量与动态变量 作用域:变量在某区域内有效-局部变量与全局变量 变量的存储类型 auto -自动型 register-寄存器型 static -静态型 extern -外部型 变量定义格式: 存储类型 数据类型 变量表;,17. 变量的存储属性 概述 变量是对程序中数据的存储空间的抽象,如: int sum;auto int a,b,c;register int i;static float x,y;,51,局部变量与全局变量 局部变量-内部变量 定义:在函数内定义,只在本函数内有效 说明: main中定义的变量只在main中有效 不同函数中同名变量,占不同内存单元 形参属于局部变量 可定义在复

    22、合语句中有效的变量 局部变量可用存储类型:auto register static (默认为auto),52,全局变量-外部变量 定义:在函数外定义,可为本文件所有函数共用 有效范围:从定义变量的位置开始到本源文件结束,及有extern说明的其它源文件,应尽量少使用全局变量,因为: 全局变量在程序全部执行过程中占用存储单元 降低了函数的通用性、可靠性,可移植性 降低程序清晰性,容易出错,定义 说明 次数: 只能1次 可说明多次 位置: 所有函数之外 函数内或函数外 分配内存: 分配内存,可初始化 不分配内存,不可初始化,外部变量说明: extern 数据类型 变量表;,外部变量定义与外部变量说

    23、明不同,若外部变量与局部变量同名,则外部变量被屏蔽,外部变量可用存储类型:缺省 或 static,53,变量存储类型,局部变量默认为auto型 register型变量个数受限,且不能为long, double, float型 局部static变量具有全局寿命和局部可见性 局部static变量具有可继承性 extern不是变量定义,可扩展外部变量作用域,返回目录,54,一、算法,二、算法设计的原则,三、算法效率的衡量方法和准则,四、算法的存储空间需求,返回目录,1.3 算法及其描述和分析,55,算法是为了解决某类问题而规定的一个有限长的操作序列。一个算法必须满足以下五个重要特性:,1有穷性 2确

    24、定性 3可行性 4有输入 5有输出,一、算法,56,1有穷性 对于任意一组合法输入值,在执行有穷步骤之后一定能结束,即: 算法中的每个步骤都能在有限时间内完成。,2确定性 对于每种情况下所应执行的操作,在算法中都有确切的规定,使算法的执行者或阅读者都能明确其含义及如何执行。并且在任何条件下,算法都只有一条执行路径。,57,3可行性 算法中的所有操作都必须足够基本,都可以通过已经实现的基本操作运算有限次实现之。,4有输入 作为算法加工对象的量值,通常体现为算法中的一组变量。有些输入量需要在算法执行过程中输入,而有的算法表面上可以没有输入,实际上已被嵌入算法之中。,58,5有输出 它是一组与“输入

    25、”有确 定关系的量值,是算法进行信息加工后得到的结果,这种确定关系即为算法的功能。,59,二、算法设计的原则,设计算法时,通常应考虑达到以下目标:,1正确性,4高效率与低存储量需求,3健壮性,2. 可读性,60,1正确性,首先,算法应当满足以特定的“规格说明”方式给出的需求。,其次,对算法是否“正确”的理解可以有以下四个层次:,a程序中不含语法错误;,b程序对于几组输入数据能够得出满足要求的结果;,61,c程序对于精心选择的、典型、苛刻且带有刁难性的几组输入数据能够得出满足要求的结果;,通常以第 c 层意义的正确性作为衡量一个算法是否合格的标准。,d程序对于一切合法的输入数据都能得出满足要求的

    26、结果;,62,2. 可读性,算法主要是为了人的阅读与交流, 其次才是为计算机执行,因此算法应该易于人的理解;另一方面,晦涩难读的程序易于隐藏较多错误而难以调试。,63,3健壮性,当输入的数据非法时,算法应当恰当地作出反映或进行相应处理,而不是产生莫名奇妙的输出结果。并且,处理出错的方法不应是中断程序的执行,而应是返回一个表示错误或错误性质的值,以便在更高的抽象层次上进行处理。,64,4高效率与低存储量需求,通常,效率指的是算法执行时间; 存储量指的是算法执行过程中所需的 最大存储空间,两者都与问题的规模 有关。,65,三、算法效率的衡量方法和准则,通常有两种衡量算法效率的方法:,事后统计法,事

    27、前分析估算法,缺点:1必须执行程序2其它因素掩盖算法本质,66,和算法执行时间相关的因素:,1算法选用的策略,2问题的规模,3编写程序的语言,4编译程序产生的机器代码的质量,5计算机执行指令的速度,67,一个特定算法的“运行工作量” 的大小,只依赖于问题的规模(通常用整数量n表示),或者说,它是问题规模的函数。,68,假如,随着问题规模 n 的增长,算法执行时间的增长率和 f(n) 的增长率相同,则可记作:,T (n) = O(f(n),称T (n) 为算法的(渐近)时间复杂度。,69,数据结构与算法经常提及的算法运行时 间并不是多少天、小时、秒、毫秒,而是是什么数量级的!用大O表示法精确与大

    28、概的数学抽象估算与精算估算在实际的工程中可能更有用!现代商业的标价理念是将10000元标为 : 9999元!,数量级,70,大O表示法 Knuth 称为Big Omicron Backmann首先提出(1892年) 算法A和算法B都可以解决此问题N是此问题的规模 运行时间分别是TA(N)和TB(N)/(函数关系:运行时间是问题规模N的函数),,71,先具体/后抽象 先用一个规模N的值代入TA(N)和TB(N),比较TA(N)和TB(N) 如TA(N)TB(N),结论:就规模N而言, TA(N)优于TB(N),问题似乎解决了 !没那么简单 然而在大多数的情况下,我们对问题的规模并不预知,如何讲T

    29、A(N)好,还是TB(N)好? 那么,72,如何估算算法的时间复杂度?,73,算法 = 控制结构 + 原操作(固有数据类型的操作),算法的执行时间 = 原操作(i)的执行次数原操作(i)的执行时间,算法的执行时间 与 原操作执行次数之和 成正比,74,从算法中选取一种对于所研究的问题来说是 基本操作 的原操作,以该基本操作 在算法中重复执行的次数 作为算法运行时间的衡量准则。,75,例 一两 个 矩 阵 相 乘,void mult(int a, int b, int /for /mult,基本操作: 乘法操作,时间复杂度: O(n3),基本操作!,76,例 二选 择 排 序,void sele

    30、ct_sort(int& a, int n) / 将 a 中整数序列重新排列成自小至大有序的整数序列。 / select_sort,基本操作: 比较(数据元素)操作,时间复杂度: O(n2),j = i; / 选择第 i 个最小元素 for ( k = i+1; k n; +k )if (ak aj ) j = k;,for ( i = 0; i n-1; +i ) if ( j != i ) aj ai ,基本操作!,77,例 三起 泡 排 序,void bubble_sort(int -i) / bubble_sort,基本操作: 赋值操作,时间复杂度: O(n2), change = F

    31、ALSE; / change 为元素进行交换标志for (j=0; j aj+1) aj aj+1; change = TRUE ; / 一趟起泡,返回目录,78,1. 熟悉各名词、术语的含义,掌握基本概念。,2. 理解算法五个要素的确切含义。,本章学习要点,3. 掌握计算语句频度和估算算法时间复杂度的方法。,79,本章可能出现的考题: 1、一个公式 程序=数据结构+算法wirth 2、大O的运算(大O的运算规则考研用) 3、有关算法的五个特性(有穷、确定、可行、I/O) 4、算法设计的四个设计目标(正确、可读、鲁棒、高效低存储) 5、基本术语(节点、元素、数据项等) 6、四大逻辑结构(集合、树、图、线性) 7、四大物理结构(顺序、链式、索引、散列hash),本章实际使用学4时,

    展开阅读全文
    提示  道客多多所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:一绪论10级.ppt
    链接地址:https://www.docduoduo.com/p-8129000.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    道客多多用户QQ群:832276834  微博官方号:道客多多官方   知乎号:道客多多

    Copyright© 2025 道客多多 docduoduo.com 网站版权所有世界地图

    经营许可证编号:粤ICP备2021046453号    营业执照商标

    1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png 10.png



    收起
    展开