290 likes | 425 Views
第 1 章 概 论. 1.1 基本概念和术语 1.2 算法和算法分析. Return. 1.1 基本概念和术语. 1 、 数据 (Data) : 一切能够由计算机接受和处理的对象。 2 、 数据元素 (Data Element) : 是数据的基本单位,在程序中作为一个整体加以考虑和处理。 3 、 数据项 (Data Item) : 是数据的不可分割的最小单位,在有些场合下,数据项又称为字段或域。. 数据项. 数据元素. ……. 4 、 数 据 结 构 (Data structure). 相互之间存在一种或多种特定关系的数据元素的集合。
E N D
第 1 章 概 论 1.1 基本概念和术语 1.2 算法和算法分析
Return 1.1 基本概念和术语 1、数据(Data):一切能够由计算机接受和处理的对象。 2、数据元素(Data Element):是数据的基本单位,在程序中作为一个整体加以考虑和处理。 3、数据项(Data Item):是数据的不可分割的最小单位,在有些场合下,数据项又称为字段或域。 数据项 数据元素 ……
4、数 据 结 构(Data structure) 相互之间存在一种或多种特定关系的数据元素的集合。 例如: 线性结构: 图形结构: 树形结构:
数据结构的内容 • 逻辑结构 • 存储结构 • 运算集合
a b c d e f 逻 辑 结 构 定义:数据之间逻辑关系描述. 没有考虑到其在计算机中的具体实现
四种基本的逻辑结构 集合、线性结构、树形结构、图形结构
存 储 结 构 定义: 存储结构(又称物理结构)指逻辑结构在计算机中的存储映像,是逻辑结构在计算机中的实现, 包括数据的表示和关系的表示. 分类: 顺序存储结构:借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系. 链式存储结构:借助指示元素存储地址的指针表示数据元素之间的逻辑关系.
运 算 集 合 讨论数据的目的是在计算机中实现操作,因此在数据结构上的运算集合是很重要的部分. 数据结构就是研究一类数据的表示及其相关操作的集合. 例如:工资表的查找,删除和插入操作.
Return 1.2 算法和算法分析 • 算法(Algorithm)定义 • 算法的特性 • 算法设计的要求 • 算法描述工具 • 算法性能分析
算 法 (Algorithm) 定 义 • 算法就是某类问题的求解方法。 • 算法就是一段程序,该程序段对给定的输入可在有限的时间内产生出确定的输出结果。
一 算 法 的 特 性
算法设计的要求 • 正确性 • 可读性 • 健壮性(鲁棒性) • 高效率与低存储量
正确性实例: 例:求n个数的最大值 max=0; for(i=1;i<=n;i++) { scanf("%f",&x); if(x>max) max=x; }
算 法 描 述 工 具 1.算法、语言、程序的关系 ⑴ 算法:描述了数据对象的元素之间的关系(包括数据逻辑关系、存贮关系描述)。 ⑵ 描述算法的工具:(自然语言、框图或高级程序设计语言) 算法的描述可用自然语言、框图或高级程序设计语言,自然语言简单但易于产生二义。框图直观但不擅长表达数据组织结构,而其中以高级程序语言较为准确但又比较严谨。 ⑶ 程序是算法在计算机中的实现(与所用计算机及所用语言有关)
2.设计实现算法过程步骤: • 找出与求解有关的数据元素之间的关系(建立结构关系) • 确定在某一数据对象上所施加运算 • 考虑数据元素的存储表示 • 选择描述算法的语言 • 设计实现求解的算法,并用程序语言加以描述。
类C语言作为描述工具 高级语言描述算法,具有严格准确的优点,但用于描述算法,也有语言细节过多的弱点,为此采用类语言形式 本课程算法采用类C语言作为描述工具.
类C语言简要说明 1. 输入和输出语句 (1)输入 cin>>x; //从键盘输入一个数 cin>>x1>>x2>>x3>>x4; //从键盘依次输入多个不同类型的变量
1. 输入和输出语句 (2)输出 cout<<exp; //将表达式exp的值输出到屏幕上 cout<<exp1<<exp2<<exp3<<exp4; //依次输出多个不同类型的表达式的值
2.最大值和最小值函数min()和max() datatype min(datatype exp1,datatype exp2,…datatype expn) //返回expi(i=1,2,…,n)中的最小值 datatype max(datatype exp1,datatype exp2,…datatype expn) //返回expi(i=1,2,…,n)中的最大值 datatype可以是整型,浮点型,字符型等各种可比较的类型
3.交换变量的值 x1←→x2; 4.出错处理语句 error("错误信息"); 等价于: cout<<"错误信息";return;
算 法 性 能 分 析 评价一个算法主要看执行这个算法所占用的机器资源的多少.而这些资源中,时间代价和空间代价是主要的方面.通常以算法执行的机器时间和所占用的存储空间来评价算法的优劣.
时 间 复 杂 度 算法中基本操作重复执行的次数的阶数,记做 T(n)=O(f(n)). 例如 1. x=x+1; 时间复杂度为O(1),称为常量阶 2. for(i=1;i<=n;i++) x=x+1;时间复杂度为O(n),称为线性阶 3. for(i=1;i<=n;i++) for(j=1;j<=n;j++) x=x+1; 时间复杂度为O(n2),称为平方阶 4.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]=c[i][j]+a[i][k]*b[k][j]; } O(n3)
时 间 复 杂 度 O(n2) 5. for(i=1;i<n;i++) for(j=1;j<=i;j++) x=x+1; 分析:循环次数 i=1时,内循环次数为1 i=2时,内循环次数为2 i=3时,内循环次数为3 … i=n-1时,内循环次数为n-1 则,内循环总的执行次数为: 1+2+3+……+n-1=n(n-1)/2
时 间 复 杂 度 O(log2n) 6. i=1; while(i<n) i*=2; 分析:循环次数和i的对应关系为 次数:1 2 3 4 …… k i 值:21 22 23 24 ……2k 假设最后一项为2k = n则,则循环次数的数量级为: log2n O(1)< O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)<O(2n)<O(n!)
空 间 复 杂 度 用空间复杂度作为算法所需存储空间的度量,记做 S(n)=O(f(n))