1 / 29

1.1 基本概念和术语 1.2 算法和算法分析

第 1 章 概 论. 1.1 基本概念和术语 1.2 算法和算法分析. Return. 1.1 基本概念和术语. 1 、 数据 (Data) : 一切能够由计算机接受和处理的对象。 2 、 数据元素 (Data Element) : 是数据的基本单位,在程序中作为一个整体加以考虑和处理。 3 、 数据项 (Data Item) : 是数据的不可分割的最小单位,在有些场合下,数据项又称为字段或域。. 数据项. 数据元素. ……. 4 、 数 据 结 构 (Data structure). 相互之间存在一种或多种特定关系的数据元素的集合。

dawson
Download Presentation

1.1 基本概念和术语 1.2 算法和算法分析

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第 1 章 概 论 1.1 基本概念和术语 1.2 算法和算法分析

  2. Return 1.1 基本概念和术语 1、数据(Data):一切能够由计算机接受和处理的对象。 2、数据元素(Data Element):是数据的基本单位,在程序中作为一个整体加以考虑和处理。 3、数据项(Data Item):是数据的不可分割的最小单位,在有些场合下,数据项又称为字段或域。 数据项 数据元素 ……

  3. 4、数 据 结 构(Data structure) 相互之间存在一种或多种特定关系的数据元素的集合。 例如: 线性结构: 图形结构: 树形结构:

  4. 数据结构的内容 • 逻辑结构 • 存储结构 • 运算集合

  5. a b c d e f 逻 辑 结 构 定义:数据之间逻辑关系描述. 没有考虑到其在计算机中的具体实现

  6. 四种基本的逻辑结构 集合、线性结构、树形结构、图形结构

  7. 存 储 结 构 定义: 存储结构(又称物理结构)指逻辑结构在计算机中的存储映像,是逻辑结构在计算机中的实现, 包括数据的表示和关系的表示. 分类: 顺序存储结构:借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系. 链式存储结构:借助指示元素存储地址的指针表示数据元素之间的逻辑关系.

  8. 运 算 集 合 讨论数据的目的是在计算机中实现操作,因此在数据结构上的运算集合是很重要的部分. 数据结构就是研究一类数据的表示及其相关操作的集合. 例如:工资表的查找,删除和插入操作.

  9. Return 1.2 算法和算法分析 • 算法(Algorithm)定义 • 算法的特性 • 算法设计的要求 • 算法描述工具 • 算法性能分析

  10. 算 法 (Algorithm) 定 义 • 算法就是某类问题的求解方法。 • 算法就是一段程序,该程序段对给定的输入可在有限的时间内产生出确定的输出结果。

  11. 算 法 的 特 性

  12. 算法设计的要求 • 正确性 • 可读性 • 健壮性(鲁棒性) • 高效率与低存储量

  13. 正 确 性

  14. 正确性实例: 例:求n个数的最大值 max=0; for(i=1;i<=n;i++) { scanf("%f",&x); if(x>max) max=x; }

  15. 可 读 性

  16. 健 壮 性

  17. 高效率与低存储量

  18. 算 法 描 述 工 具 1.算法、语言、程序的关系 ⑴ 算法:描述了数据对象的元素之间的关系(包括数据逻辑关系、存贮关系描述)。 ⑵ 描述算法的工具:(自然语言、框图或高级程序设计语言) 算法的描述可用自然语言、框图或高级程序设计语言,自然语言简单但易于产生二义。框图直观但不擅长表达数据组织结构,而其中以高级程序语言较为准确但又比较严谨。 ⑶ 程序是算法在计算机中的实现(与所用计算机及所用语言有关)

  19. 2.设计实现算法过程步骤: • 找出与求解有关的数据元素之间的关系(建立结构关系) • 确定在某一数据对象上所施加运算 • 考虑数据元素的存储表示 • 选择描述算法的语言 • 设计实现求解的算法,并用程序语言加以描述。

  20. 类C语言作为描述工具 高级语言描述算法,具有严格准确的优点,但用于描述算法,也有语言细节过多的弱点,为此采用类语言形式 本课程算法采用类C语言作为描述工具.

  21. 类C语言简要说明 1. 输入和输出语句 (1)输入 cin>>x; //从键盘输入一个数 cin>>x1>>x2>>x3>>x4; //从键盘依次输入多个不同类型的变量

  22. 1. 输入和输出语句 (2)输出 cout<<exp; //将表达式exp的值输出到屏幕上 cout<<exp1<<exp2<<exp3<<exp4; //依次输出多个不同类型的表达式的值

  23. 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可以是整型,浮点型,字符型等各种可比较的类型

  24. 3.交换变量的值 x1←→x2; 4.出错处理语句 error("错误信息"); 等价于: cout<<"错误信息";return;

  25. 算 法 性 能 分 析 评价一个算法主要看执行这个算法所占用的机器资源的多少.而这些资源中,时间代价和空间代价是主要的方面.通常以算法执行的机器时间和所占用的存储空间来评价算法的优劣.

  26. 时 间 复 杂 度 算法中基本操作重复执行的次数的阶数,记做 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)

  27. 时 间 复 杂 度 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

  28. 时 间 复 杂 度 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!)

  29. 空 间 复 杂 度 用空间复杂度作为算法所需存储空间的度量,记做 S(n)=O(f(n))

More Related