郑州大学-数据结构(第一章 绪论).ppt

郑州大学-数据结构(第一章 绪论).ppt

  1. 1、本文档共51页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1.2.1 什么是算法-算法描述 1.2 算法 自然语言描述 伪码描述 传统流程图描述 程序设计语言描述(本课程选Java) 1、用文字来描述算法: 给n个元素a0~an-1输入数值; 把第1个元素a0赋给用于保存最大值元素的变量x; 把表示下标的变量i赋初值0; 如果i<n则向下执行,否则输出x后结束算法; 如果ai>x则将ai赋给x,否则不改变x的值,这使得x始终保存着当前比较过的所有元素的最大值; 使下标i增加1,以指向下一个元素; 转向第d)步继续执行。 1.2.1 什么是算法-算法描述 1.2 算法 5 8 4 2 6 0 1 2 3 4 举例:从n个整数元素中查找出最大值 1.2.1 什么是算法-算法描述 1.2 算法 2、用流程图来描述算法: 开始 为n个元素a0~an-1输入数值 a0 x 1 i ai x i+1 i i<n ai>x Y Y N 输出x 结束 N 5 8 4 2 6 0 1 2 3 4 1.2.1 什么是算法-算法描述 1.2 算法 3、用java语言来描述算法: public class FindMax { public static void main(String[] args) { int a[]={5,8,4,2,6}; int x=a[0]; int i=1; while(i<a.length) { if(a[i]>x) x=a[i]; i=i+1; } System.out.println("the max element is:"+x); } } 5 8 4 2 6 0 1 2 3 4 5 8 4 2 6 0 1 2 3 4 1.2.1 什么是算法-算法描述 1.2 算法 运行结果 1.2.1 什么是算法-算法与数据结构的关系 1.2 算法 算法建立在数据结构之上,对数据的操作需用算法来描述。 算法设计依赖数据的逻辑结构,算法实现依赖数据的存储结构。 实现一种抽象数据类型,需要选择合适的存储结构。 求解同一问题可能有许多不同的算法,如何去评价这些算法的优劣? 主要考虑如下三点: 执行算法所耗费的时间; 执行算法所耗费的存储空间,其中主要考虑辅助存储空间; 算法应易于理解,易于编码,易于调试等等。 算法(执行效率)分析主要包括 1、时间代价分析 2、空间代价分析 1.2.2 算法分析 1.2 算法 算法执行效率需通过依据该算法编制的程序在计算机上运行所消耗的时间或空间来分析。其方法通常有两种: 事后统计:计算机内部进行执行时间和实际占用空间的统计。 问题:必须先运行依据算法编制的程序;依赖软硬件环境,容易掩盖算法本身的优劣;没有实际价值。 事前分析:求出该算法的一个时间界限函数。 1.2.2 算法分析 1.2 算法 与算法效率相关的因素有: 依据算法选用何种策略; 问题的规模; 程序设计的语言; 编译程序所产生的机器代码的质量; 机器执行指令的速度; 撇开软硬件等有关部门因素,可以认为一个特定算法“运行工作量”的大小,只依赖于问题的规模(通常用n表示),或者说,它是问题规模的函数。 1.2.2 算法分析 1.2 算法 算法中基本操作重复执行的次数是问题规模n的某个函数,其时间量度记作 T(n)=O(f(n)),称作算法的渐近时间复杂度(Asymptotic Time complexity),简称时间复杂度。一般地,常用最深层循环内的语句中的原操作的执行频度(重复执行的次数)来表示。 “O”的定义: 若f(n)是正整数n的一个函数,则 O(f(n))表示? M≥0 ,使得当n ≥ n0时,| f(n) | ≤ M | f(n0) | 。 表示时间复杂度的阶有: O(1) :常量时间阶 O (n):线性时间阶 O(㏒n) :对数时间阶 O(n㏒n) :线性对数时间阶 O (nk): k≥2 ,k次方时间阶 1.2.2 算法分析-时间代价分析 1.2 算法 1.2.2 算法分析-时间代价分析 1.2 算法 例1 两个n阶方阵的乘法 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]+=a[i][k]*b[k][j] ;

文档评论(0)

致新智库 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档